ggridgesのridgeplotに垂直方向のカラーグラデーションを追加するにはどうすればよいですか?


8

ggridgesのパッケージには、いずれかのソリッドカラーでridgeplotsを描くことができます:

ggplot(iris, aes(x=Sepal.Width, y=Species))+
geom_density_ridges(alpha=0.33, scale=2, fill="#0570b0", colour=alpha(0.1))+
theme_classic()

または水平方向の色のグラデーション:

ggplot(iris, aes(x=Sepal.Width, y=Species, fill=..x..))+
geom_density_ridges_gradient(scale=2,colour=alpha(0.1))+
theme_classic()+
scale_fill_gradient(low="#0570b0", high="White")

しかし、この例(D3.jsを使用して描画されたもの)のように、垂直方向の色のグラデーションを持つ同様のグラフを作成できるかどうかを知りたいです。Rで同様のものを実装する方法はありますか?

ONSからのD3.jsの垂直勾配リッジプロット

画像ソースONS:自殺や薬物中毒で死亡する可能性が最も高い中年世代


それが可能かどうかは疑わしい。開発者は、それがx軸に沿ってのみ利用可能であり、コードはx値を使用して勾配に沿ったステップを計算するように見えます:github.com/clauswilke/ggridges/blob/master/R/geoms-gradient.R
ダンスローン

回答:


4

これは、devoutsvgおよび関連するsvgpatternsimpleパッケージを使用して行うことができます。

# install packages    
# devtools::install_github("coolbutuseless/lofi")      
# devtools::install_github("coolbutuseless/minisvg")   
# devtools::install_github("coolbutuseless/devout")    
# devtools::install_github("coolbutuseless/devoutsvg") 
# devtools::install_github("coolbutuseless/poissoned") 

library(lofi)
library(minisvg)
library(devout)
library(devoutsvg)
library(svgpatternsimple)
library(poissoned)

#create gradient
grad <- create_gradient_pattern(id="p1", angle=90, colour1="White", 
colour2="#0570b0")

#visualise it
grad$show()

#encode it
gradRGB <- encode_pattern_params_as_hex_colour(pattern_name="gradient",angle=90, 
colour1="White", colour2="#0570b0")   

#draw graph
svgout(filename = "test.svg", pattern_pkg="svgpatternsimple")
ggplot(iris, aes(x=Sepal.Width, y=Species))+
  geom_density_ridges(alpha=0.33, scale=2, 
fill=gradRGB, colour=alpha(0.1))+
  theme_classic()
invisible(dev.off())    

これにより、次のような垂直グラデーションを持つ.svgファイルが得られます。

ここに画像の説明を入力してください


更新:関数がGitHub:VictimOfMaths / DeathsOfDespairに追加されました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.