更改ylim(轴限制)会使数据落在范围之外.如何防止这种情况?

Ale*_*mbe 16 r ggplot2

df <- data.frame(age=c(10,10,20,20,25,25,25),veg=c(0,1,0,1,1,0,1))
g=ggplot(data=df,aes(x=age,y=veg))
g=g+stat_summary(fun.y=mean,geom="point")
Run Code Online (Sandbox Code Playgroud)

点反映了每个年龄的蔬菜的平均值,这是我预期的并且希望在使用以下命令更改轴限制后保留.

g=g+ylim(0.2,1)
Run Code Online (Sandbox Code Playgroud)

遗憾的是,使用上述命令更改轴限制会导致从数据中删除veg == 0子集,从而产生

"警告消息:删除了包含缺失值的4行(stat_summary)"

这很糟糕,因为现在数据图(stat_summary mean)省略了veg == 0点.如何防止这种情况?我只是想避免显示绘图的空白部分 - 纵坐标从0到.2,但不删除stat_summary计算中的相关数据.

koh*_*ske 26

你可以通过指定coord系统来做到这一点:

df <- data.frame(age=c(10,10,20,20,25,25,25),veg=c(0,1,0,1,1,0,1))
g=ggplot(data=df,aes(x=age,y=veg))
g=g+stat_summary(fun.y=mean,geom="point")
g+coord_cartesian(ylim=c(0.2,1)) #do not use +ylim() here
Run Code Online (Sandbox Code Playgroud)

  • 有人知道为什么你必须指定坐标系以便不丢弃值吗?为什么不将此作为默认设置?这里的示例可能不是最好的示例,但是如果您有几个值的大误差条,并且想要将y轴的范围限制为显示常规模式,则此解决方案可以完美地工作.如果我使用ylim()或scale_y_continuous(),则不会绘制超出范围的误差条. (3认同)