使用ggplot的geom_col绘图时如何将y轴最小刻度150000置于图表底部
问题原因
你之前调整失败的核心原因是:scale_y_continuous(limits = ...) 和 ylim() 都会直接过滤掉取值范围外的数据,而柱状图的柱体默认从y=0的位置开始绘制,当你把y轴下限设为150000时,小于这个值的柱体底部区域会被判定为超出范围直接清除,最终导致柱子全部消失。
解决方法
使用coord_cartesian() 函数设置坐标轴可视范围即可,该函数只会裁剪绘图的显示区域,不会修改或删除原始数据,完全不影响柱体的正常绘制。
修改后完整代码
ggplot(data = all_trips_v3)+ geom_col(aes(x= weekday, y=number_of_rides, fill = member_casual), position = "dodge")+ ggtitle("Total Weekday Rides of Casuals and Members")+ scale_y_continuous(breaks = c(150000, 200000, 250000, 300000, 350000, 400000, 450000), name = "Number of Rides")+ scale_x_discrete(name = "Weekday") + # 新增此行设置y轴可视范围,不会过滤原始数据 coord_cartesian(ylim = c(150000, 450000))
补充说明
如果你希望柱状图的柱底直接从150000开始(而非保留0到150000的隐藏部分),可以先对数据做转换:把number_of_rides减去150000之后再绘图,同时修改y轴的刻度标签即可,但这种方法容易误导读者对数据的判断,更推荐使用上述coord_cartesian方案。
内容的提问来源于stack exchange,提问作者Joshua Rowsom
相关产品推荐
相关产品推荐

