R 在“中找不到对象”;几何符号;功能

R 在“中找不到对象”;几何符号;功能,r,ggplot2,error-handling,visualization,R,Ggplot2,Error Handling,Visualization,我想在一个图中添加用于均值差比较的显著性星号。如果没有星星的线条,情节就可以: da<-data.frame(group=c("condition1_high","condition1_low","condition2_high","condition2_low"),numb=c(30,25,26,20)) da %>% separate(group, c("A", "B&

我想在一个图中添加用于均值差比较的显著性星号。如果没有星星的线条,情节就可以:

da<-data.frame(group=c("condition1_high","condition1_low","condition2_high","condition2_low"),numb=c(30,25,26,20))

da %>% separate(group, c("A", "B"), remove = F) %>% 
  ggplot(aes(x=A, y=numb, fill = B)) +
  geom_bar(position=position_dodge(), stat="identity") +
  scale_fill_manual(values=rep(c("grey20","grey80"), ceiling(length(da$group)/2))[1:length(da$group)]) +
  geom_text(aes(label=numb), 
            position = position_dodge(width = 0.9), vjust = -0.25) +
  geom_signif(stat="identity",
              data=data.frame(x=c(0.5,1.5), xend=c(1,2),
                              y=c(30, 30), annotation=c("**", "*","***","+")),
              aes(x=x,xend=xend, y=y, yend=y, annotation=annotation))

现在它说物体B不见了。我能做什么?

您需要将
inherit.aes=FALSE
添加到
geom\u signif
调用中,否则它将尝试在您定义的新数据帧中查找名为
B
的列。这是因为您在对
ggplot
的初始调用中加入了
aes
调用。执行此操作时,默认情况下,所有后续几何体都将从该调用继承美学和数据。如果将新数据传递给geom,它需要包含所有这些美学的值或覆盖美学,或者需要使用
inherit.aes=FALSE关闭继承

da%>%
分离(c组(“A”、“B”),移除=假)%>%
ggplot(aes(x=A,y=NUMBE,fill=B))+
几何图形栏(position=position\u dodge(),stat=“identity”)+
刻度填充手册(数值=代表(c(“灰色20”、“灰色80”),
上限(长度(da$组)/2)[1:长度(da$组)])+
几何图形文本(aes(标签=编号),
位置=位置减淡(宽度=0.9),vjust=-0.25)+
geom_signif(stat=“identity”,inherit.aes=FALSE,
data=data.frame(x=c(0.5,1.5),xend=c(1,2),
y=c(30,30),注释=c(“**”,“*”),
aes(x=x,xend=xend,y=y,yend=y,annotation=annotation))

da %>% separate(group, c("A", "B"), remove = F) %>% 
  ggplot(aes(x=A, y=numb, fill = B)) +
  geom_bar(position=position_dodge(), stat="identity") +
  scale_fill_manual(values=rep(c("grey20","grey80"), ceiling(length(da$group)/2))[1:length(da$group)]) +
  geom_text(aes(label=numb), 
            position = position_dodge(width = 0.9), vjust = -0.25) +
  geom_signif(stat="identity",
              data=data.frame(x=c(0.5,1.5), xend=c(1,2),
                              y=c(30, 30), annotation=c("**", "*")),
              aes(x=x,xend=xend, y=y, yend=y, annotation=annotation))