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

如何在R中绘制展示各组占比的独立组多层环形图

绘制你要的独立组并列环形百分比图

直接用R的ggplot2就能搞定,步骤如下:

1. 先整理数据

得先把数据转成适合画环形图的长格式,还要加载几个常用包:

library(ggplot2)
library(dplyr)
library(tidyr)

# 你的原始数据
data <- data.frame(Specialty = c("Neuro-oncologist", "Neurosurgeon", "Radiation-oncologist"),
                   Percentage = c(44.2, 69.6, 17.2))

# 生成包含"目标百分比"和"剩余比例"的长数据
data_long <- data %>%
  mutate(Remaining = 100 - Percentage) %>%
  pivot_longer(cols = c(Percentage, Remaining),
               names_to = "Type",
               values_to = "Value") %>%
  # 固定顺序,确保百分比部分在环形的外侧
  mutate(Type = factor(Type, levels = c("Percentage", "Remaining")))

2. 绘制环形图

用极坐标把条形图转成环形,再通过分面让每个专业单独成图:

ggplot(data_long, aes(x = 2, y = Value, fill = Type)) +
  # 画基础条形,x设为2是为了控制环形的宽度
  geom_col(color = "white", size = 0.5) +
  # 转换为极坐标,让数值对应角度
  coord_polar(theta = "y", start = 0) +
  # 按专业分面,每个专业一个环形
  facet_wrap(~Specialty) +
  # 在环形中心添加百分比文本
  geom_text(data = data, aes(x = 1, y = 0, label = paste0(Percentage, "%")),
            size = 5, fontface = "bold", color = "#222222") +
  # 隐藏x轴的刻度和标签
  scale_x_discrete(breaks = NULL) +
  # 自定义填充颜色,你可以根据喜好修改
  scale_fill_manual(values = c("#2d3436", "#b2bec3")) +
  # 调整主题,去掉多余元素,让图更简洁
  theme_minimal() +
  theme(
    legend.position = "none", # 不需要图例,直接看中心文本
    axis.text = element_blank(),
    axis.title = element_blank(),
    strip.text = element_text(size = 12, face = "bold"), # 专业名称的样式
    panel.spacing = unit(2, "lines") # 调整环形之间的间距
  )

效果说明

  • 每个环形对应一个医学专业,深色部分是你给定的百分比,浅色部分为剩余的比例
  • 环形中心直接标注百分比数值,清晰直观
  • 分面布局和你提供的示例图结构完全一致,三个独立环形并列展示

内容的提问来源于stack exchange,提问作者ltong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:45:29