错误:Aesthetics 必须为长度 1 或与数据 (9) 相同:标签

问题描述

我过滤了一个简单的数据场后出现了这个错误,从 12 个 obs 到 9 个,都有 2 个变量......

tmp_Type <- c("A","B","C","D","E","F","G","H","I","J","K","L")
tmp_Sum <- c(380000.2,1500,4532,2,34567,29344,545,838.5,1000,0)
tmp_Sum <- round(tmp_Sum)

sum(tmp_Sum,na.rm=T)

tmp_Summary <- data.frame(tmp_Type,tmp_Sum) # create df

summary(tmp_Summary)

ggplot(data=tmp_Summary,aes(x=tmp_Type,y=tmp_Sum)) +
  geom_histogram (stat = "identity",aes(fill= tmp_Type)) +
  geom_text (label = (tmp_Sum),vjust=-1,hjust=0.5)

tmp_Summary <- tmp_Summary %>% filter(tmp_Sum > 0)

summary(tmp_Summary)

ggplot(data=tmp_Summary,hjust=0.5)

解决方法

第一个图之所以起作用,是因为您在全局环境中有 tmp_Sum 向量。如果您在创建数据框后删除它们,第一个图也会给您错误。

tmp_Type <- c("A","B","C","D","E","F","G","H","I","J","K","L")
tmp_Sum <- c(380000.2,1500,4532,2,34567,29344,545,838.5,1000,0)
tmp_Sum <- round(tmp_Sum)
tmp_Summary <- data.frame(tmp_Type,tmp_Sum) 
rm(tmp_Type,tmp_Sum) #removing variables

现在开始绘制。

library(ggplot2)
ggplot(data=tmp_Summary,aes(x=tmp_Type,y=tmp_Sum)) +
  geom_histogram (stat = "identity",aes(fill= tmp_Type)) +
  geom_text (label = (tmp_Sum),vjust=-1,hjust=0.5)

层错误(数据=数据,映射=映射,统计=统计,geom=GeomText,: 未找到对象“tmp_Sum”

始终在 label 中包含 aes

library(ggplot2)
ggplot(data=tmp_Summary,aes(fill= tmp_Type)) +
  geom_text (aes(label = tmp_Sum),hjust=0.5)

enter image description here