ggplot2如何强制箱线图y轴显示0-500完整连续刻度,不受数据限制
ggplot2固定Y轴显示范围到0-500的解决方案
你当前只在scale_y_continuous中指定了刻度(breaks)的生成规则,没有显式声明Y轴的显示范围,ggplot2默认会根据数据集的实际取值范围自动裁剪坐标轴边界,因此即便你将breaks的最大值设为500,超出数据最大值的刻度也不会被渲染出来。
方法1:直接指定Y轴范围(超出范围的数据会被移除)
在scale_y_continuous中添加limits = c(0, 500)参数即可强制固定Y轴的上下边界,修改后代码如下:
ggplot(twohour, aes(x = Treatment, y = Total, fill = Treatment)) + scale_y_continuous(limits = c(0, 500), breaks = seq(0, 500, by = 20)) + geom_boxplot()
注意:如果你的数据存在超过500或者低于0的取值,用该方法会自动过滤掉这部分数据,不会在图中显示。
方法2:仅调整显示范围(保留所有原始数据)
如果你需要完整保留所有数据点,仅把坐标轴显示范围拉伸到0-500,使用coord_cartesian设置Y轴显示边界即可,修改后代码如下:
ggplot(twohour, aes(x = Treatment, y = Total, fill = Treatment)) + scale_y_continuous(breaks = seq(0, 500, by = 20)) + geom_boxplot() + coord_cartesian(ylim = c(0, 500))
原问题效果图参考:
内容的提问来源于stack exchange,提问作者BC2504
相关产品推荐
相关产品推荐

