使用ggplot2绘制条形图时出现「Missing values」问题求助
解决方法
核心问题是scale_y_continuous(limits = c(1, 5))会直接过滤掉y值小于1的数据点——哪怕你的条形数值本身在1-5之间,ggplot绘制条形图时默认从y=0开始,这部分底部区域会被该参数剔除,导致图形异常。
换用下面两种方式之一即可解决:
仅锁定y轴可视范围(推荐)
使用coord_cartesian(ylim = c(1, 5))替代原scale参数,它只会调整绘图的显示区域,不会删除任何数据,能完整保留条形的同时固定y轴在1-5区间:ggplot(your_data, aes(x = 类别列名, y = 数值列名)) + geom_col() + coord_cartesian(ylim = c(1, 5))同时自定义刻度与范围
如果需要指定y轴显示的刻度(比如只显示1、3、5),可以结合scale_y_continuous()设置刻度,再用coord_cartesian()锁定范围:ggplot(your_data, aes(x = 类别列名, y = 数值列名)) + geom_col() + scale_y_continuous(breaks = c(1, 2, 3, 4, 5)) + # 自定义刻度 coord_cartesian(ylim = c(1, 5))
内容的提问来源于stack exchange,提问作者Marc B.
相关产品推荐
相关产品推荐

