Emuluj domyślną paletę kolorów ggplot2

Jakiej funkcji mogę użyć do emulowania domyślnej palety kolorów ggplot2 dla żądanej liczby kolorów. Na przykład, wejście 3 wytworzy wektor znaków o kolorach szesnastkowych z tymi kolorami: Tutaj wpisz opis obrazka

 138
Author: SFun28, 2011-11-20

4 answers

To po prostu równomiernie rozmieszczone odcienie wokół koła kolorów, począwszy od 15:

gg_color_hue <- function(n) {
  hues = seq(15, 375, length = n + 1)
  hcl(h = hues, l = 65, c = 100)[1:n]
}

Na przykład:

n = 4
cols = gg_color_hue(n)

dev.new(width = 4, height = 4)
plot(1:n, pch = 16, cex = 2, col = cols)

Tutaj wpisz opis obrazka

 189
Author: John Colby,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-28 10:55:29

Jest to wynik

library(scales)
show_col(hue_pal()(4))

Czterokolorowe ggplot

show_col(hue_pal()(3))

Trójkolorowe ggplot

 75
Author: Climbs_lika_Spyder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 16:15:08

Te odpowiedzi są bardzo dobre, ale chciałem podzielić się inną rzeczą, którą odkryłem na stackoverflow, która jest naprawdę bardzo przydatna, oto bezpośredni link

Zasadniczo, @ DidzisElferts pokazuje, w jaki sposób możesz uzyskać wszystkie kolory, współrzędne itp., których ggplot używa do budowania stworzonej przez Ciebie fabuły. Bardzo ładnie!

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
 49
Author: Josh Morel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:02

Ze strony 106 książki Ggplot2 Hadley Wickham:

Domyślny schemat kolorów, scale_colour_hue wybiera równomiernie rozmieszczone odcienie wokół koła kolorów hcl.

Z odrobiną inżynierii odwrotnej możesz skonstruować tę funkcję:

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

Pokazanie tego w barplot:

y <- 1:3
barplot(y, col = ggplotColours(n = 3))

Tutaj wpisz opis obrazka

 40
Author: Andrie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-28 11:09:26