J'ai des données où je regarde la différence de croissance entre une monoculture et une culture mixte pour deux espèces différentes. De plus, j'ai fait un graphique pour clarifier mes données.
Je veux un diagramme à barres avec des barres d'erreur, l'ensemble de données est bien sûr plus grand, mais pour ce graphique, c'est le data.frame
avec les moyens pour le barplot.
plant species means
Mixed culture Elytrigia 0.886625
Monoculture Elytrigia 1.022667
Monoculture Festuca 0.314375
Mixed culture Festuca 0.078125
Avec ces données, j'ai fait un graphique en ggplot2
, où plant
est sur l'axe des x et means
sur l'axe des y, et j'ai utilisé une facette pour diviser les espèces.
Voici mon code:
limits <- aes(ymax = meansS$means + eS$se, ymin=meansS$means - eS$se)
dodge <- position_dodge(width=0.9)
myplot <- ggplot(data=meansS, aes(x=plant, y=means, fill=plant)) + facet_grid(. ~ species)
myplot <- myplot + geom_bar(position=dodge) + geom_errorbar(limits, position=dodge, width=0.25)
myplot <- myplot + scale_fill_manual(values=c("#6495ED","#FF7F50"))
myplot <- myplot + labs(x = "Plant treatment", y = "Shoot biomass (gr)")
myplot <- myplot + opts(title="Plant competition")
myplot <- myplot + opts(legend.position = "none")
myplot <- myplot + opts(panel.grid.minor=theme_blank(), panel.grid.major=theme_blank())
Jusqu'à présent, ça va. Cependant, je veux ajouter deux lignes horizontales différentes dans les deux facettes. Pour cela, j'ai utilisé ce code:
hline.data <- data.frame(z = c(0.511,0.157), species = c("Elytrigia","Festuca"))
myplot <- myplot + geom_hline(aes(yintercept = z), hline.data)
Cependant, si je fais cela, j'obtiens un tracé où il y a deux facettes supplémentaires, où les deux lignes horizontales sont tracées. Au lieu de cela, je veux que les lignes horizontales soient tracées dans les facettes avec les barres, pas pour créer deux nouvelles facettes. N'importe qui a une idée de comment résoudre ce problème.
Je pense que c'est plus clair si je mets le graphique que je crée maintenant:
Assurez-vous que l'espèce variable est identique dans les deux jeux de données. Si c'est un facteur dans l'un d'eux, alors ça doit aussi être un facteur dans l'autre
library(ggplot2)
dummy1 <- expand.grid(X = factor(c("A", "B")), Y = rnorm(10))
dummy1$D <- rnorm(nrow(dummy1))
dummy2 <- data.frame(X = c("A", "B"), Z = c(1, 0))
ggplot(dummy1, aes(x = D, y = Y)) + geom_point() + facet_grid(~X) +
geom_hline(data = dummy2, aes(yintercept = Z))
dummy2$X <- factor(dummy2$X)
ggplot(dummy1, aes(x = D, y = Y)) + geom_point() + facet_grid(~X) +
geom_hline(data = dummy2, aes(yintercept = Z))