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

如何使用ggplot2绘制类似Excel带阴影渐变效果的专业样式饼图

在ggplot2中可以借助ggpattern、shadowtext扩展包实现你需要的带径向渐变、阴影效果的专业饼图,效果和Excel的专业样式基本一致,具体实现方案如下:

前置准备

先安装所需依赖包:

install.packages(c("ggplot2", "ggpattern", "shadowtext"))

你原有代码存在一处小问题:数据框定义中explanation列误用了赋值符<-,改为=即可。

完整实现代码

library(ggplot2)
library(ggpattern)
library(shadowtext)

# 构造数据集
df <- data.frame(
  group = c("Male", "Female", "Car"),
  value = c(27, 23, 50),
  explanation = c("Male: 27%", "Female: 23%", "Car: 50%")
)

# 计算标签的摆放位置
df <- df[order(df$group, decreasing = TRUE), ]
df$y_pos <- cumsum(df$value) - df$value / 2

# 绘制专业样式饼图
ggplot(df, aes(x = 1, y = value, fill = explanation)) +
  # 生成带径向渐变填充的扇区
  geom_col_pattern(
    width = 1,
    pattern = "radial",
    pattern_fill = "white",
    pattern_fill2 = c("#1f77b4", "#ff7f0e", "#2ca02c"),
    pattern_alpha = 0.8,
    color = "white",
    size = 1
  ) +
  # 添加带阴影背景的标签,提升层次感
  geom_shadowtext(
    aes(x = 1.2, y = y_pos, label = explanation),
    size = 4,
    bg.color = "white",
    bg.r = 0.1
  ) +
  # 转换为极坐标生成饼图
  coord_polar("y", start = 0) +
  # 清空无关的页面元素
  theme_minimal() +
  theme(
    panel.grid = element_blank(),
    axis.ticks = element_blank(),
    axis.title = element_blank(),
    panel.border = element_blank(),
    axis.text = element_blank(),
    legend.position = "none"
  )

可自定义调整项

  • 修改pattern_fill2参数的色值,可以自定义每个扇区的基础渐变颜色
  • 调整pattern参数可切换为条纹、网格等其他填充效果
  • 修改geom_shadowtext的bg.color、bg.r参数可调整标签阴影的颜色和范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:51:00