如何使用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
相关产品推荐
相关产品推荐

