ggplot2 - bar parcelle avec la pile et la dodge
Je suis en train de créer un barplot à l'aide de ggplot2
où je suis d'empilement par une variable et en esquivant par un autre.
Voici un exemple d'ensemble de données:
df=data.frame(
year=rep(c("2010","2011"),each=4),
treatment=rep(c("Impact","Control")),
type=rep(c("Phylum1","Phylum2"),each=2),
total=sample(1:100,8))
Je voudrais créer un barplot où x=treatment
, y=total
, la superposition des variables est type
et l'esquiva variable est year
. Bien sûr, je peux faire l'un ou l'autre:
ggplot(df,aes(y=total,x=treatment,fill=type))+geom_bar(position="dodge",stat="identity")
ggplot(df,aes(y=total,x=treatment,fill=year))+geom_bar(position="dodge",stat="identity")
Mais pas les deux! Merci à tous ceux qui peuvent donner des conseils.
- Vous ne pouvez faire l'un ou l'autre, pas les deux. Voir mes réponses ici: stackoverflow.com/questions/12592041/...
Vous devez vous connecter pour publier un commentaire.
Voici une autre prendre l'aide de facettage au lieu d'esquiver:
Avec Tyler du changement proposé:
+ theme(panel.margin = grid::unit(-1.25, "lines"))
+ theme(panel.margin = unit(-1.25, "lines"))
pouvez sorte de les rendre de plus, comme ils sont dans le même champ visuel, mais toujours pas exactement ce que l'OP a été après. Nice meilleure alternative. +1grid::unit
pour obtenir ce sans chargementgrid
directement.Le plus proche que vous pouvez obtenir, il suffit de tracer une frontière autour de la
dodged
bars à mettre en évidence la superposition destype
valeurs.set.seed(8)
avant d'exécuter le code et regarder les valeurs.geom_rect
à remplir dans certaines parties, mais alors vous êtes à l'aide de ggplot à dessiner plutôt que de l'intrigue.Vous pouvez utiliser
interaction(year, treatment)
que l'axe des x de la variable comme une alternative àdodge
.Créé sur 2018-04-26 par le reprex paquet (v0.2.0).
paste0(year, "/", treatment)
?Il est cependant possible de faire sa difficile/délicats, vous avez essentiellement à la couche graphique à barres.
voici mon code:
Ce n'est pas vraiment de l'échelle, cependant, il existe des moyens de code afin qu'il soit adapté à votre situation de crédit, où en raison de son origine, j'avais appris cette méthode dans le post suivant: https://community.rstudio.com/t/ggplot-position-dodge-with-position-stack/16425