首页 > 解决方案 > 如何在 ggplot2 折线图中制作半线?

问题描述

我在 R 方面的进展非常缓慢,但现在我可以做一些事情了。
现在,我在一张图中绘制了 4 种处理对植物生长的影响。如您所见,误差条重叠,这就是我将它们设为不同颜色的原因。我认为为了使图表更清晰,最好将下部误差条用作下部 2 行的“半胡须”,将上部误差条用作顶部两行(就像我现在一样),请参阅附图以供参考
见附图

我的脚本现在设置的方式可行吗?
这是我的情节脚本的一部分,我还有更多,但这是我指定情节本身的地方我的阴谋(省略了美学和东西),在此先感谢:

“soda1”是我更改的数据框,以清晰的方式设置,“sdtv”是我每个时间点/治疗的标准偏差,“oppervlak”是我的 y 变量,“Measuring Date”是我的 x 变量。“Tray ID”是处理,所以我的分组变量。

p <- ggplot(soda1, aes(x=reorder(`Measuring Date`, oppervlak), y=`oppervlak`, group=`Tray ID`, fill=`Tray ID`, colour = `Tray ID` )) + 
 scale_fill_brewer(palette = "Spectral") + 
 geom_errorbar(data=soda1, mapping=aes(ymin=oppervlak, ymax=oppervlak+sdtv, group=`Tray ID`), width=0.1) + 
 geom_line(aes(linetype=`Tray ID`)) + 
 geom_point(mapping=aes(x=`Measuring Date`, y=oppervlak, shape=`Tray ID`)) 

print(p)

标签: rggplot2plotlinegrapherrorbar

解决方案


仅显示误差条的一侧可以隐藏两个或多个变量或测量值分布之间的不确定性重叠。除了隐藏这种重叠之外,您还可以通过添加position=position_dodge(width=)geom_errorbar().

例如:

library(ggplot2)

# some random data with two factors
df <- data.frame(a=rep(1:10, times=2),
                 b=runif(20),
                 treat=as.factor(rep(c(0,1), each=10)),
                 errormax=runif(20),
                 errormin=runif(20))

# plotting both sides of the errorbars, but dodging them horizontally
p <- ggplot(data=df, aes(x=a, y=b, colour=treat)) +
  geom_line() +
  geom_errorbar(data=df, aes(ymin=b-errormin, ymax=b+errormax),
                position=position_dodge(width=0.25))

错误闪避


推荐阅读