【发布时间】:2019-09-07 10:51:20
【问题描述】:
我目前正在尝试绘制一个实验的结果,在该实验中我比较了对照和实验治疗之间的死亡率。最好的表示是使用 geom_line 连接每个处理的平均值(时间延迟)。但是,我还想包括对照值,以便能够显示实验治疗中的死亡率何时恢复到对照中看到的相似值。我不希望 geom_line() 从控件 (w=0) 到第一个处理 (w=1) 画一条线。信息量不大。
我尝试在 geom_line() 函数中使用子集。它可以工作,但是与我不包含子集语句时相比,图形输出完全不同。
这里有一些代码应该会有所帮助。第一个脚本是向您展示正常的情节
dat <- data.frame(w = c(rep(0, 4), rep(1, 4), rep(2, 4), rep(3, 4), rep(4, 4)), TempTr = c("24.C", "28.C", "24.NC", "28.NC"), Species = "S", Wasp = "A", mort = rnorm(20, 7, 1), se=rnorm(20, 0.5, 0.1))
pd = position_dodge(0.2)
dat %>%
ggplot(aes(y=mort, x=w, colour=TempTr, group=TempTr)) + geom_errorbar(aes(ymin=mort-se, ymax=mort+se), colour="black", width=0, position = pd) + geom_point(aes(fill=TempTr), colour = "black", size=2, alpha=0.8, shape=21, position = pd) + geom_line(aes(linetype=TempTr), position=pd, size=1.25, alpha=0.8)
现在我尝试删除 w=0 和 w=1 之间的部分。换句话说,只显示从 w=1:4 开始的行
dat %>%
ggplot(aes(y=mort, x=w, colour=TempTr, group=TempTr)) + geom_errorbar(aes(ymin=mort-se, ymax=mort+se), colour="black", width=0, position = pd) + geom_point(aes(fill=TempTr), colour = "black", size=2, alpha=0.8, shape=21, position = pd) + geom_line(aes(linetype=TempTr), position=pd, size=1.25, alpha=0.8, data=subset(dat, w %in% c("1", "2", "3", "4")))
这可行,但不适用于我的真实数据。当我用我的真实数据(有几个物种,因此有几个方面)执行此操作时,线条不再正确连接点。省略了 0 和 1 之间的线,但情节的其余部分是错误的。知道这是为什么吗?是我放置函数的顺序吗? Normal plot from original data
Bad plot from original data after removing the desired section
这是来自原始数据的图像。
【问题讨论】: