ggplot2调用coord_polar()绘制饼图报unique()相关错误如何解决
报错触发原因
- 核心触发点:你在
ggplot的美学映射aes()中调用了factor(class),但你构建的df数据框仅包含Vegetation、Frequency两列,不存在名为class的字段。unique()函数需要输入向量来统计分类水平,找不到对应列的情况下直接抛出报错。 - 潜在逻辑错误:你已提前统计了各植被类型的出现频数,使用
geom_bar()时需要指定stat = "identity",否则该图层默认会对数据集行做计数统计,和你的绘图预期不符。同时原代码未在aes()中指定y轴映射的频数字段,也会导致后续饼图角度计算错误。
修正后可运行代码
freqtable <- table(worms$Vegetation) df <- as.data.frame.table(freqtable) colnames(df)<-c("Vegetation","Frequency") pie<- ggplot(df, aes(x = "", y = Frequency, fill = factor(Vegetation))) + geom_bar(width = 1, stat = "identity") + theme(axis.line = element_blank(),plot.title = element_text(hjust=0.5)) + labs(fill="植被类型",x=NULL, y=NULL, title="植被类型占比饼图", caption="来源: Worms数据集") pie+coord_polar(theta = "y", start=0)
内容的提问来源于stack exchange,提问作者Rahim Cp
相关产品推荐
相关产品推荐

