r-为ggplot2中的geom_errorbar手动设置最大和最小错误值(不同)



我正试图用ggplot2中的geom_errorbar指定错误值。事实上,我有一个最小值和一个最大值,我想显示,而不是错误值。我试图通过在输入数据帧中添加两列来指定它们,一列称为lower,另一列名为upper。但是,当上下两列中的值不同时,正负误差条仍然相同。我在R中尝试了以下代码:

df <- data.frame(
Genome = factor(c("A", "Y", "MT","A", "Y", "MT","A", "Y", "MT")),
resp = c(67.3, 33.9, 86.7, 7.2,6.3,13.3,24.9,61.8,0.0),
group = factor(c("african", "african", "african", 
"amerindian","amerindian","amerindian","european","european","european")),
upper = c(0.0, 44.8, 0.0, 0.0,10.0,0.0,0.0,71,0.0),
lower = c(0.0, 23.0, 0.0, 0.0,2.6,0.0,0.0,52.6,0)
)
# Default bar plot
p<- ggplot(df, aes(x=Genome, y=resp, fill=group)) + 
geom_bar(stat="identity", color="black", 
position=position_dodge()) +
geom_errorbar(aes(ymin=lower, ymax=upper), width=.2,
position=position_dodge(.9)) 
print(p)

有人知道问题出在哪里吗?当我更改下限值和上限值时,更接近resp值,这是有效的,但这些不是我需要绘制的值。

提前感谢!

这是我做过很多次的一个非常常见的错误。为geom_errorbar指定yminymax时,指定的是最小和最大y值本身,而不是与y值的+/-偏差。这意味着,如果您有一个y值为5的点,并且希望指示5+/-1,则不会指定ymin = -1ymax = +1,而是指定ymin = y - 1ymax = y + 1。有道理吗?

假设mima是有符号值(意味着ma是正值,mi是负值(,您的代码应该如下所示:

p<- ggplot(df2, aes(x=dose, y=len, fill=Ancestry)) + 
geom_bar(stat="identity", color="black", 
position=position_dodge()) +
geom_errorbar(aes(ymin=len + mi, ymax=len + ma), width=.2,
position=position_dodge(.9)) 
print(p)

请注意,ymaxymin引用了aes()中的y美学列。

如果列mami的值都为正,则需要在aes()中相应地调整符号。

相关内容

  • 没有找到相关文章

最新更新