R语言环形图(Donut chart)定制问题:添加计数与百分比
我来帮你完成这个环形图的制作,结合dplyr做数据预处理,用plotly生成带计数和百分比的交互式环形图,刚好匹配你的需求~
完整实现步骤
1. 数据预处理:统计计数与生成显示标签
首先需要对原始数据分组统计,计算每个颜色的出现次数和占比,再把这些信息合并成适合在图表上显示的标签:
library(dplyr) library(plotly) # 你的原始数据 df <- tibble(Color = c("Green","Green","Yellow","Yellow","Gray","Gray","Red","Red")) # 数据处理:统计计数、计算百分比、组合显示标签 df_summary <- df %>% group_by(Color) %>% summarize(Count = n(), .groups = "drop") %>% # 统计每个颜色的出现次数 mutate( Percentage = round((Count / sum(Count)) * 100, 1), # 计算百分比,保留1位小数 Label = paste0(Color, "\n", Count, " (", Percentage, "%)") # 组合颜色、计数、百分比为显示标签 )
这里.groups = "drop"是为了清除分组残留信息,避免后续绘图出现问题;\n用来让标签在图表上换行显示,可读性更强。
2. 生成交互式环形图
用plotly的饼图类型,通过hole参数将其转为环形,同时把自定义标签配置到图表中:
# 创建环形图 plot_ly(df_summary, labels = ~Color, values = ~Count, text = ~Label, # 鼠标悬停时显示的详细文本 textinfo = "text", # 扇区上直接显示自定义的Label内容 insidetextorientation = "radial", # 让内部文本沿径向排列,更美观 type = "pie", hole = 0.6, # 控制环形空心的大小,0为实心饼,1为完全空心 marker = list(colors = ~Color)) %>% # 让扇区颜色与Color列的名称匹配 layout( title = "颜色分布环形图", showlegend = TRUE # 如果不需要图例可以改为FALSE )
生成的图表会在每个扇区清晰显示颜色名称、原始计数和百分比,同时支持鼠标悬停查看细节,交互体验很好。
内容的提问来源于stack exchange,提问作者costebk08




