Tracer les barres d'erreur avec position = "dodge"
m'a causé de nombreux maux de tête ces derniers temps... Curieusement, les esquiver avec l'esthétique shape
o fill
(qui ne devraient pas s'appliquer aux barres d'erreur) semblent bien fonctionner. Cependant, l'esquive avec l'esthétique group
place les barres dans des positions inattendues. Je me demandais si ce n'était pas un bug de ggplot2.
J'aime placer des barres d'erreur personnalisées derrière les diagrammes à barres ou les boxplots. Parfois, je donne des couleurs spéciales à différents éléments de mes graphiques. Pour cette raison, j'inclus souvent aes()
pas dans le ggplot()
mais dans les géoms ou les stats.
Voici un exemple de barres d'erreur "bien placées" :
library(ggplot2)
library(dplyr)
ToothGrowth %>%
mutate(dose = factor(dose)) %>%
ggplot(aes(dose, len)) +
stat_boxplot(aes(fill = supp), geom = "errorbar", position = "dodge") +
geom_boxplot(aes(fill = supp), position = "dodge", coef = 0)
Cela produit l'avertissement Warning: Ignoring unknown aesthetics: fill
. Utilisation de aes(shape = supp)
imprime le même graphique.
Je m'attendrais à ce que le même tracé, mais aucun avertissement en échangeant le remplissage/la forme avec "groupe" ( aes(group = supp)
). Cela ne produit aucun avertissement, mais un résultat très inattendu :
ToothGrowth %>%
mutate(dose = factor(dose)) %>%
ggplot(aes(dose, len)) +
stat_boxplot(aes(group = supp), geom = "errorbar", position = "dodge") +
geom_boxplot(aes(fill = supp), position = "dodge", coef = 0)
Quelqu'un aurait-il une explication pour ce comportement ? Ne devrait-on pas regrouper avec aes(group = ...)
y aes(fill = ...)
se comportent-ils de la même manière sur la position d'esquive ?