ggplot2设置Y轴范围后出现空白图及数据缺失警告问题
问题原因与解决办法
问题原因
你遇到的空白和警告,核心原因是**geom_bar默认从y=0开始绘制柱状图**。当你用scale_y_continuous(limits = c(75,100))设置Y轴范围时,ggplot会直接过滤掉所有Y值超出该范围的数据元素——而柱子的底部在y=0(远低于75),因此整个柱子被判定为“超出范围”,被系统移除,最终导致图形空白,同时抛出“移除3行缺失值”的警告。
另外注意:你代码里的test3是笔误,实际应该用你定义的test数据集。
解决方法
有两种实用方案:
用
coord_cartesian()设置显示范围(推荐)
这个函数只是缩放绘图的显示区域,不会删除任何数据,完美保留柱子的完整绘制逻辑:ggplot(data=test, aes(x=Metrics, y=Percent)) + geom_bar(stat="identity") + coord_cartesian(ylim = c(75, 100))调整柱子起始点适配
scale_y_continuous
如果一定要用scale_y_continuous,可以把柱子的起始位置改为75,同时调整Y轴标签显示原数值:ggplot(data=test, aes(x=Metrics, y=Percent - 75)) + geom_col() + # geom_col是geom_bar(stat="identity")的简写 scale_y_continuous(limits = c(0, 25), labels = function(x) x + 75) + ylab("Percent")
内容的提问来源于stack exchange,提问作者user483292
相关产品推荐
相关产品推荐

