环形柱状图(Circular Bar Plot)面板空白区域缩减与图表放大技术咨询
我看了你提供的环形柱状图代码,上下空白过多的问题主要和极坐标下的y轴范围设置、绘图边距以及导出尺寸有关,下面给你几个针对性的调整方案:
1. 缩小内圈范围,优化ylim()参数
你当前设置的ylim(-380,450)中,负数值(-380)决定了内圈的大小——这个值的绝对值越大,内圈越小,上下空白就越多。可以适当减小这个绝对值,比如改成ylim(-100, 450)(具体数值可以根据你的柱子高度微调),这样内圈变大,上下的空白区域会明显缩减:
p <- ggplot(tab3, aes(x=as.factor(id), y=medie)) + geom_bar(stat="identity", fill=alpha("skyblue", 0.7)) + # 调整内圈大小,减小负数值的绝对值 ylim(-100, 450) + # 其余主题设置保持不变...
2. 收紧绘图边距
你当前的plot.margin设置是margin(t = 5, r = 5, b = 5, l = 5),这里的单位默认是points,可以改成更小的数值,甚至设为0来进一步压缩空白:
theme( # ...其他主题参数 plot.margin = margin(t = 0, r = 0, b = 0, l = 0) # 完全收紧边距 )
如果担心标题/标签被裁剪,可以保留极小的边距,比如margin(t = 2, r = 2, b = 2, l = 2)。
3. 调整导出尺寸的宽高比
你用ggsave导出的是5x5的正方形图片,环形图本身更适合接近正方形的比例,但可以尝试稍微调整宽高,比如改成width = 4, height = 4,或者根据实际显示效果微调,避免多余的空白区域:
ggsave(path = "charts", "pog_waste_coll_2008_2018_danger_circ_barplot.png", width = 4, height = 4, dpi = 300)
加上dpi=300还能提升图片清晰度,不会因为尺寸缩小而模糊。
4. 移除不必要的主题元素(可选)
你代码里设置了panel.background = element_rect(fill = "red", colour = "red"),这个红色背景不会影响空白,但如果不需要可以删掉,让代码更简洁。
把这些调整结合起来,你就能得到上下空白大幅缩减的环形柱状图了。如果还有局部细节需要微调,可以根据实际显示效果再调整ylim的具体数值~
内容的提问来源于stack exchange,提问作者InflatableGull

