Comment faire dodge dans geom_bar d'accord avec dodge dans geom_errorbar, geom_point
J'ai un jeu de données où les mesures sont effectuées pour les différents groupes à des jours différents.
Je veux, à côté des barres représentant les mesures sur des jours différents pour les différents groupes avec les groupes de barres espacées selon le jour de la mesure avec errorbars superposés pour eux.
Je vais avoir des problèmes avec la esquivant dans geom_bar
d'accord avec la dodge sur geom_errorbar
.
Ici est un simple morceau de code:
days = data.frame(day=c(0,1,8,15));
groups = data.frame(group=c("A","B","C","D", "E"), means=seq(0,1,length=5));
my_data = merge(days, groups);
my_data$mid = exp(my_data$means+rnorm(nrow(my_data), sd=0.25));
my_data$sigma = 0.1;
png(file="bar_and_errors_example.png", height=900, width=1200);
plot(ggplot(my_data, aes(x=day, weight=mid, ymin=mid-sigma, ymax=mid+sigma, fill=group)) +
geom_bar (position=position_dodge(width=0.5)) +
geom_errorbar (position=position_dodge(width=0.5), colour="black") +
geom_point (position=position_dodge(width=0.5), aes(y=mid, colour=group)));
dev.off();
Dans l'intrigue, le errorsegments s'affiche avec un décalage de son bar (désolé, pas de parcelles de permis pour les débutants, même si ggplot2 est le sujet).
Quand binwidth est ajusté geom_bar
le décalage n'est pas fixe et change de jour en jour.
Avis, que geom_errorbar
et geom_point
dodge en tandem.
Comment puis-je obtenir geom_bar
d'accord avec les deux autres?
Toute aide appréciée.
source d'informationauteur user1771185
Vous devez vous connecter pour publier un commentaire.
Les problèmes d'alignement sont dues, en partie, à vos barres de ne pas représenter les données que vous avez l'intention. Les lignes suivantes correctement:
Le premier changement que j'ai reformaté le code en fonction de la la pointe de la R guide de style.
Maintenant, quand on regarde les données, nous voyons que le jour est un facteur et tout le reste est le même.
Pour supprimer un espace vide de l'intrigue, j'ai converti le jour de la colonne de facteurs. VÉRIFIEZ que les niveaux sont dans le bon ordre avant de continuer.
À la prochaine modification que j'ai faite est la définition de y dans votre
aes
arguments. Je suis sûr que vous le savez, cela vous permet de ggplot de savoir où chercher pour les valeurs de y. Puis j'ai changé la position de l'argument de "l'esquive" et a ajouté lestat="identity"
argument. Le"identity"
argument indique ggplot tracé de y à x.geom_errorbar
hérite de la dodge position degeom_bar
de sorte que vous pouvez le laisser quelconques, maisgeom_point
ne le fait pas, vous devez spécifier cette valeur. La valeur par défaut dodge estposition_dodge(.9)
.C'est une vieille question, mais depuis que j'ai rencontré le problème, aujourd'hui, j'ai envie d'ajouter ce qui suit:
Dans
la
width
-argument dansposition_dodge
contrôles de l'esquivant la largeur de la choses à esquiver les uns des autres. Cependant, ce qui produit des moustaches aussi vaste que barres, qui est peut-être indésirables.Une largeur supplémentaire-argument à l'extérieur de la position_dodge contrôle la largeur des moustaches (et bars):