Émuler la palette de couleurs par défaut de ggplot2
205
Quelle fonction puis-je utiliser pour émuler la palette de couleurs par défaut de ggplot2 pour un nombre de couleurs souhaité. Par exemple, une entrée de 3 produirait un vecteur de caractères de couleurs HEX avec ces couleurs:
Curieusement, les couleurs (au moins dans la deuxième image) ne correspondent pas à leurs codes RVB. Cependant, en regardant un graphique que j'ai fait localement, ces codes RVB sont corrects.
Sparhawk
1
peut-être que c'est une chose de navigateur?
Climbs_lika_Spyder
1
Oui, très étrange. Dans Firefox, le vert est # 15ba3e, dans Chromium c'est # 00b83a, et après avoir téléchargé l'image et visionné dans un programme d'image dédié (Gwenview), c'est # 00b839. Seul Konqueror l'affiche correctement sous la forme # 00ba38. Donc, un seul a raison, et aucun n'est cohérent!
Sparhawk
1
? Est - il possible d'obtenir le nom de la couleur, par exemple « rouge2 », « Blue3" Le code de couleur, par exemple # 00b83a, est difficile à utiliser de manière intuitive.
Sibo Jiang
2
Pour faciliter le copier-coller, les valeurs hexadécimales sont: # f8766d - Rouge # 00ba38 - Vert # 83b0fc - Bleu
pluke
66
Ces réponses sont toutes très bonnes, mais je voulais partager une autre chose que j'ai découverte sur stackoverflow qui est vraiment très utile, voici le lien direct
Fondamentalement, @DidzisElferts montre comment vous pouvez obtenir toutes les couleurs, coordonnées, etc. que ggplot utilise pour construire un tracé que vous avez créé. Très agréable!
C'est encore plus simple que ça. Vous pouvez éviter la première ligne d'algèbre puisque, bien qu'elle ne soit pas dans l'aide, hclrecycle les valeurs> 360.
John Colby
13
Vous pouvez même utiliser scales:::show_col(ggplotColours(n=3))pour afficher la couleur et les valeurs
Stat-R
bien que je n'ai pas encore compris comment obtenir des échelles et son show_col pour cracher les valeurs (hexadécimales ou tout autre format) qu'il trace ...
display.brewer.all()
sur mon bureau. Je pense que j'aime mieux Set1 pour les facteurs.Réponses:
Il s'agit simplement de teintes également espacées autour de la roue chromatique, à partir de 15:
gg_color_hue <- function(n) { hues = seq(15, 375, length = n + 1) hcl(h = hues, l = 65, c = 100)[1:n] }
Par exemple:
n = 4 cols = gg_color_hue(n) dev.new(width = 4, height = 4) plot(1:n, pch = 16, cex = 2, col = cols)
la source
length=n+1
dans leseq
, alors que j'ailength=n
C'est le résultat de
library(scales) show_col(hue_pal()(4))
show_col(hue_pal()(3))
la source
Ces réponses sont toutes très bonnes, mais je voulais partager une autre chose que j'ai découverte sur stackoverflow qui est vraiment très utile, voici le lien direct
Fondamentalement, @DidzisElferts montre comment vous pouvez obtenir toutes les couleurs, coordonnées, etc. que ggplot utilise pour construire un tracé que vous avez créé. Très agréable!
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
la source
De la page 106 du livre ggplot2 de Hadley Wickham:
Avec un peu de rétro-ingénierie, vous pouvez construire cette fonction:
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) }
Démontrer cela dans barplot:
y <- 1:3 barplot(y, col = ggplotColours(n = 3))
la source
hcl
recycle les valeurs> 360.scales:::show_col(ggplotColours(n=3))
pour afficher la couleur et les valeurs