ggplot2绘制饼图:取消水平图例堆叠、设置色盲友好配色
ggplot2 化学数据集饼图调整方案
针对11种化学物质(对应字段c1~c11)的分面饼图绘制需求,以下代码可一次性解决图例堆叠、配色替换、尺寸调整、分割线移除所有需求:
library(ggplot2) library(grid) # 读取自有数据集,需包含ratio(占比)、chemical(化学物质名称)、treatment(分组处理)三个字段 # data <- 你的数据读取代码 ggplot(data, aes(x="", y=ratio, fill=chemical)) + # 移除扇区白色分割线:设置color=NA去掉柱形默认描边 geom_bar(stat="identity", width=1, position = position_fill(), color = NA) + facet_wrap(~treatment, nrow=1) + coord_polar("y", start=0) + # 加载色盲友好离散配色 scale_fill_viridis_d(option = "D") + theme_void(base_size = 20) + theme( legend.position = c(0.5, 1.15), legend.direction = "horizontal", # 缩小图例项横向间距,减少不必要折行 legend.spacing.x = unit(0.2, 'cm'), # 仅顶部预留图例空间,砍掉其余方向无效边距放大饼图 plot.margin = unit(c(3, 0, 0, 0), 'cm') ) + # 强制图例最多分2行排布,禁止多层自动堆叠 guides(fill = guide_legend(nrow = 2, byrow = TRUE))
各调整项参数说明
- 图例换行堆叠问题:仅设置
legend.direction = "horizontal"不会控制图例行数,需通过guides(fill = guide_legend(nrow = 2, byrow = TRUE))强制指定图例最多排布2行,配合缩小legend.spacing.x参数压缩图例项间距,即可实现预期排布效果,无需调整图例边距参数。 - 色盲友好配色替换:调用
scale_fill_viridis_d()使用viridis专业校准色板,该色板对各类色觉障碍人群均有良好区分度,是学术绘图通用的合规配色方案;如果需要更多颜色选择,也可替换为scale_fill_brewer(palette = "Set2"),同为官方认证的色盲友好色板。 - 增大饼图尺寸:通过
plot.margin参数移除左右、底部的无效留白,仅在顶部保留图例所需的显示空间,最大化绘图区域占比,配合theme_void()移除所有冗余的坐标轴、网格元素,即可实现饼图尺寸放大效果。 - 移除内部白色分割线:饼图的白色分割线本质是柱状图的默认白色描边,在
geom_bar()中添加color = NA参数移除描边,即可得到无分割线的纯色填充效果。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

