当ymax超过Y轴刻度时,误差条会被错误地渲染

时间:2014-12-07 12:41:24

标签: r ggplot2

我希望使用limits中的scale_y_continuous“裁剪”我的Y轴:

df1 <- data.frame(xx=c('a','b','c'),
                  yy=c(7, 10, 8),
                  se=c(2, 4, 2))
p <- ggplot(data=df1, mapping = aes(x=xx, y=yy)) + 
  geom_bar(data = df1, position=position_dodge(), stat="identity") +
  geom_errorbar(aes(ymin=yy-se, ymax=yy+se), width=0.1, position=position_dodge())

p # left plot

p + scale_y_continuous(limits=c(0,11)) # middle plot
# Warning message:
# Removed 4 rows containing missing values (geom_path).

在这种情况下,一个误差条超过Y轴的上限,我希望它只是被裁剪(如右图所示),但实际上误差条的垂直线根本没有渲染(cf在中间的情节。除了手动绘制误差条之外,还有什么办法可以解决这个问题吗?

left - plot without rescaling, middle - plot with rescaling, error bar is impaired, right - desired plot with "cropped" error bar

1 个答案:

答案 0 :(得分:1)

我相信

library("scales")
p + scale_y_continuous(limits=c(0,11),oob=squish)

会做(未经测试); &#34; OOB&#34;代表&#34;超出范围&#34;

更标准的答案是使用

coord_cartesian(ylim=c(0,11))

但这也会改变标记间距等。