You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 14:21:20