ggplot2组合geom_bar与geom_line时geom_line不显示问题求解
问题原因
x轴变量AIRLINE为离散分类值,geom_line默认按x轴取值自动分组,每个航空公司分类下仅有1个DELAY_PERCENTAGE观测值,无法生成连线,需手动指定group参数强制所有观测归为同一组完成连线。
修正代码
在geom_line的美学映射中添加group = 1即可正常显示折线:
delay.df %>% ggplot() + geom_bar(aes(x = AIRLINE, y = TOTAL_DELAYS), stat = "identity") + geom_line(aes(x = AIRLINE, y = DELAY_PERCENTAGE, group = 1), size = 1, colour = "blue")
可选优化:双Y轴适配
如果TOTAL_DELAYS(总延误次数)和DELAY_PERCENTAGE(延误占比)数值量级差距过大,折线会因为数值过小贴在图表底部显示效果差,可以添加次Y轴做数值适配:
# 系数根据你的实际数值范围调整,比如总延误最大值为2000、占比最大值为100时,系数可设为20 delay.df %>% ggplot() + geom_bar(aes(x = AIRLINE, y = TOTAL_DELAYS), stat = "identity") + geom_line(aes(x = AIRLINE, y = DELAY_PERCENTAGE * 20, group = 1), size = 1, colour = "blue") + scale_y_continuous( name = "总延误次数", sec.axis = sec_axis(~./20, name = "延误占比(%)") )
你使用的数据表结构参考:
内容的提问来源于stack exchange,提问作者chloebutter
相关产品推荐
相关产品推荐

