我有数据可以看到两种不同物种的单一栽培和混合栽培之间的生长差异.此外,我制作了一个图表,以使我的数据清晰.
我想要一个带有误差条的条形图,整个数据集当然更大,但是对于这个图,这是data.frame
带有条形图的方法.
plant species means
Mixed culture Elytrigia 0.886625
Monoculture Elytrigia 1.022667
Monoculture Festuca 0.314375
Mixed culture Festuca 0.078125
Run Code Online (Sandbox Code Playgroud)
有了这个数据I作出的曲线图ggplot2
,其中plant
是在x轴和means
所述y轴和I中使用的小面来划分种类.
这是我的代码:
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())
Run Code Online (Sandbox Code Playgroud)
到目前为止一切都很好.但是,我想在两个方面添加两条不同的水平线.为此,我使用了这段代码:
hline.data <- data.frame(z = c(0.511,0.157), species = c("Elytrigia","Festuca"))
myplot <- myplot + geom_hline(aes(yintercept = z), hline.data)
Run Code Online (Sandbox Code Playgroud)
但是,如果我这样做,我会得到一个情节,如果有两个额外的方面,其中绘制了两条水平线.相反,我希望将水平线条绘制在带有条形的刻面中,而不是制作两个新刻面.任何人都知道如何解决这个问题.
我认为如果我把现在创建的图表放得更清楚:
Thi*_*rry 62
确保两个数据集中的变量种类相同.如果它是一个因素,那么它也必须是另一个因素
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))
Run Code Online (Sandbox Code Playgroud)
dummy2$X <- factor(dummy2$X)
ggplot(dummy1, aes(x = D, y = Y)) + geom_point() + facet_grid(~X) +
geom_hline(data = dummy2, aes(yintercept = Z))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35888 次 |
最近记录: |