Mit welcher Funktion kann ich die Standardfarbpalette von ggplot2 für eine gewünschte Anzahl von Farben emulieren. Zum Beispiel würde eine Eingabe von 3 einen Zeichenvektor von HEX-Farben mit diesen Farben erzeugen:
Die Farbtöne im Farbkreis sind ab 15 gleich verteilt:
gg_color_hue <- function(n) {
hues = seq(15, 375, length = n + 1)
hcl(h = hues, l = 65, c = 100)[1:n]
}
Beispielsweise:
n = 4
cols = gg_color_hue(n)
dev.new(width = 4, height = 4)
plot(1:n, pch = 16, cex = 2, col = cols)
Diese Antworten sind alle sehr gut, aber ich wollte noch etwas mitteilen, das ich beim Stackoverflow entdeckt habe und das wirklich sehr nützlich ist. Hier ist der direkter Link
Grundsätzlich zeigt @DidzisElferts, wie Sie alle Farben, Koordinaten usw. abrufen können, die ggplot zum Erstellen eines von Ihnen erstellten Diagramms verwendet. Sehr schön!
p <- ggplot(mpg,aes(x=class,fill=class)) + geom_bar()
ggplot_build(p)$data
[[1]]
fill y count x ndensity ncount density PANEL group ymin ymax xmin xmax
1 #F8766D 5 5 1 1 1 1.111111 1 1 0 5 0.55 1.45
2 #C49A00 47 47 2 1 1 1.111111 1 2 0 47 1.55 2.45
3 #53B400 41 41 3 1 1 1.111111 1 3 0 41 2.55 3.45
4 #00C094 11 11 4 1 1 1.111111 1 4 0 11 3.55 4.45
5 #00B6EB 33 33 5 1 1 1.111111 1 5 0 33 4.55 5.45
6 #A58AFF 35 35 6 1 1 1.111111 1 6 0 35 5.55 6.45
7 #FB61D7 62 62 7 1 1 1.111111 1 7 0 62 6.55 7.45
Ab Seite 106 des ggplot2-Buches von Hadley Wickham:
Das Standardfarbschema scale_colour_hue wählt gleichmäßig verteilte Farbtöne um das Farbrad aus.
Mit ein wenig Reverse Engineering können Sie diese Funktion erstellen:
ggplotColours <- function(n = 6, h = c(0, 360) + 15){
if ((diff(h) %% 360) < 1) h[2] <- h[2] - 360/n
hcl(h = (seq(h[1], h[2], length = n)), c = 100, l = 65)
}
Demonstration dies in Barplot:
y <- 1:3
barplot(y, col = ggplotColours(n = 3))