如何添加不同的面线(How to add different lines for facets)

2019-06-17 15:46发布

我有数据,我看在一个单一文化和两种不同种类的混合培养物之间增长的差异。 此外,我做了一个曲线图,使我的数据清除。

我想误差棒,整个数据集当然是更大的一个barplot,但对于这个图,这是data.frame与该barplot的手段。

plant           species     means
Mixed culture   Elytrigia   0.886625
Monoculture     Elytrigia   1.022667
Monoculture     Festuca     0.314375
Mixed culture   Festuca     0.078125

有了这个数据I中制成的图表ggplot2 ,其中plant是在x轴和means在y轴上,并且我用的小平面来划分种类。

这是我的代码:

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

到目前为止,这是罚款。 不过,我想在两个方面增加两个不同的水平线。 对于这一点,我用这个代码:

    hline.data <- data.frame(z = c(0.511,0.157), species = c("Elytrigia","Festuca")) 
    myplot <- myplot + geom_hline(aes(yintercept = z), hline.data)

但是,如果我这样做,我得到一个情节是有两个额外的方面,其中两条水平线绘制。 相反,我想的水平线与酒吧的小面绘制,而不是使两个新的层面。 任何一个知道如何解决这个问题。

我想有更清楚,如果我把我现在创建图形:

Answer 1:

确保变量种类是在这两个数据集是相同的。 如果在一个对他们的一个因素,那么就必须在其他的因素太多

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



文章来源: How to add different lines for facets
标签: r ggplot2 facet