Wie kann ich einem Gratplot in ggridges einen vertikalen Farbverlauf hinzufügen?

8

Die Ggridges Paket können Sie Gratplots mit beiden Volltonfarben zeichnen:

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

oder mit horizontalen Farbverläufen:

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")

Aber ich möchte wissen, ob es möglich ist, ein ähnliches Diagramm mit einem vertikalen Farbverlauf wie dieses Beispiel (das mit D3.js gezeichnet wurde) zu erstellen. Gibt es eine Möglichkeit, etwas Ähnliches in R zu implementieren?

Vertikales Gradienten-Ridgeplot in D3.js vom ONS

Bildquelle ONS: Generation mittleren Alters, die am wahrscheinlichsten durch Selbstmord und Drogenvergiftung stirbt

VictimOfMaths
quelle
Ich bezweifle, dass es möglich ist. Der Entwickler gibt an, dass es nur entlang der x-Achse verfügbar ist und der Code die x-Werte verwendet, um Schritte entlang des Verlaufs zu berechnen: github.com/clauswilke/ggridges/blob/master/R/geoms-gradient.R
Dan Slone

Antworten:

4

Wir können dies mit den Paketen devoutsvg und verwandten svgpatternsimple tun :

# 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())    

Auf diese Weise erhalten Sie eine .svg-Datei mit einem vertikalen Farbverlauf, der folgendermaßen aussieht: Vertikales Farbverlaufs-Ridgeplot.

Geben Sie hier die Bildbeschreibung ein


Aktualisieren: Funktion ist jetzt auf GitHub: VictimOfMaths / DeathsOfDespair .

VictimOfMaths
quelle