为什么我的ggplot饼图不显示图例?该如何解决该问题
图例缺失的原因
fill = group参数未放置在aes()括号内部:ggplot只有放在美学映射函数aes()内的变量绑定才会触发图例生成,放在aes()外属于全局静态参数,不会被识别为需要生成图例的映射关系。geom_bar()中手动指定了fill = c("blue", "white", "orange"):该操作直接给每个条形分配了固定颜色,覆盖了变量和颜色的绑定关系,ggplot无法基于该静态设置生成对应分组的图例。
解决方法
将颜色和分组变量的绑定放在aes()内,自定义颜色通过scale_fill_manual()函数设置,即可保留映射关系生成图例,删除原有geom_label()行即可将分组标注替换为图例,修改后代码如下:
library(ggplot2) MediaPercentage2 <- data.frame( group = c("Messengers", "Social Media", "Other Media"), mediaTime = c(90, 35, 25) ) ggplot(MediaPercentage2, aes(x = "", y = mediaTime, fill = group)) + geom_bar(stat = "identity", color = "black", show.legend = TRUE) + # 自定义分组颜色需通过scale函数设置,和group变量一一绑定 scale_fill_manual(values = c("blue", "white", "orange")) + coord_polar(theta = "y") + ggtitle("Title")
如果需要调整图例样式,可额外追加相关参数:
- 调整图例位置:追加
theme(legend.position = "top"),可选值包括left/right/bottom/none等 - 修改图例标题:追加
labs(fill = "分组名称")
内容的提问来源于stack exchange,提问作者Ninke
相关产品推荐
相关产品推荐

