Comment ajouter des lignes différentes pour les facettes

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. En outre, j'ai fait un graphique pour faire mes données claires.

je veux un barplot avec des barres d'erreur, l'ensemble des 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 ggplot2, où plant est sur l'axe des x et means sur l'axe des y, et j'ai utilisé une facette pour diviser l'espèce.

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, c'est bien. Cependant, je voudrais 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 de faire deux nouvelles facettes. Quelqu'un à une idée comment résoudre ce problème.

je pense que cela le rend plus clair si j'ai mis le graphique que je viens d'en créer un maintenant:

enter image description here

35
demandé sur black_sheep07 2012-08-07 16:43:33

1 réponses

assurez-vous que les espèces variables sont identiques dans les deux ensembles de données. Si un facteur dans l'un d'eux, alors il doit être un facteur dans l'autre trop

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))

enter image description here

dummy2$X <- factor(dummy2$X)
ggplot(dummy1, aes(x = D, y = Y)) + geom_point() + facet_grid(~X) + 
    geom_hline(data = dummy2, aes(yintercept = Z))

enter image description here

55
répondu Thierry 2012-08-07 13:36:11