如何在R中调整x轴尺寸提升可读性?ggplot绘图优化问题
R ggplot2分面用电量柱状图x轴显示优化方案
以下是可直接复用的优化方案,按需选择即可:
方案1:自定义x轴刻度间隔(优先推荐)
你当前x轴为30分钟间隔的时间值,默认会展示全部48个刻度导致拥挤,可通过scale_x_continuous设置固定间隔展示刻度,比如每2小时展示1个刻度:
electric_cons %>% group_by(day_of_week, Hour) %>% summarise(AvgUnits = mean(Unit), .groups = "drop") %>% ggplot() + geom_bar(aes(x = Hour, y = AvgUnits, fill = AvgUnits), stat = "identity") + # 新增:设置x轴刻度每2小时显示1个,可自行修改breaks的步长 scale_x_continuous(breaks = seq(0, 23, by = 2), name = "Time") + facet_wrap(.~day_of_week) + theme(axis.text.x = element_text(angle=90, vjust=1, hjust=1)) + ggtitle("Average Consumption of electricity during a day", subtitle = "Consumption recorded in every 30 minutes - Weekly ") + ylab("Average units consumed")
方案2:正确实现坐标轴翻转
之前使用coord_flip无效大概率是添加位置错误,将其加入图层链即可实现翻转,x轴转为纵向展示后空间更充足:
electric_cons %>% group_by(day_of_week, Hour) %>% summarise(AvgUnits = mean(Unit), .groups = "drop") %>% ggplot() + geom_bar(aes(x = Hour, y = AvgUnits, fill = AvgUnits), stat = "identity") + facet_wrap(.~day_of_week) + # 新增坐标轴翻转 coord_flip() + # 翻转后原x轴变为y轴,调整文本为水平显示更易读 theme(axis.text.y = element_text(size = 9)) + ggtitle("Average Consumption of electricity during a day", subtitle = "Consumption recorded in every 30 minutes - Weekly ") + xlab("Time") + ylab("Average units consumed")
方案3:调整分面排版增加宽度
将分面改为单列纵向排列,每个分面的横向宽度更大,可容纳更多x轴刻度:
electric_cons %>% group_by(day_of_week, Hour) %>% summarise(AvgUnits = mean(Unit), .groups = "drop") %>% ggplot() + geom_bar(aes(x = Hour, y = AvgUnits, fill = AvgUnits), stat = "identity") + # 修改分面为单列排列 facet_wrap(.~day_of_week, ncol = 1) + theme(axis.text.x = element_text(angle=90, vjust=1, hjust=1)) + ggtitle("Average Consumption of electricity during a day", subtitle = "Consumption recorded in every 30 minutes - Weekly ") + xlab("Time") + ylab("Average units consumed")
额外优化建议
如果需要导出高清大图,可在代码末尾加上ggsave语句自定义图片尺寸,进一步放大刻度显示效果:
# 单位为英寸,可按需调整尺寸 ggsave("electric_consumption.png", width = 18, height = 10, dpi = 300)
内容的提问来源于stack exchange,提问作者Thiri Jeyaseelan
相关产品推荐
相关产品推荐

