2017-07-07 191 views
1

我有这样的情节添加标签

dat = data.frame(group = c("A","A","B","B"), pct = c(.2,.3,.5,.4), subgroup = c("D","E","D","E"), x = c("Z","Z","Z","Z")) 


ggplot(data = dat, aes(x = factor(x), y =pct, fill= subgroup))+geom_bar(position = "stack", stat = "identity")+facet_wrap(~group) 

我要添加的每个层叠的z-也就是2种组分的总和,所以我建立一个铭牌数据帧之上的标签和使用geom_text:

LABEL = data.frame(x = c("Z","Z"), y = c(.5,.9), group = c("A","B")) 
    ggplot(data = dat, aes(x = factor(x), y =pct, fill= subgroup))+geom_bar(position = "stack", stat = "identity")+facet_wrap(~group)+geom_text(aes(x= x,y=y ,label=labs), data = LABEL, vjust=-.2, size = 3) 

但由于分组是不是在数据帧我得到

: object 'subgroup' not found 

,但我不希望子错误作为我绘制的标签的数据框中的组是每个子组的总和。

上面的示例每个小平面都有一个堆叠条,但解决方案应适用于每个小平面图任意数量的堆叠条。

+0

尝试'geom_text'中的'inherit.aes = FALSE'。或者从全局的'ggplot'中删除'fill'。 – aosmith

+0

这似乎不起作用。它是否适合你,你可以发布代码? – user3022875

回答

2

这是你想要的吗?

dat = data.frame(group = c("A","A","B","B"), 
       pct = c(.2,.3,.5,.4), 
       subgroup = c("D","E","D","E"), 
       x = c("Z","Z","Z","Z")) 

LABEL = data.frame(x = c("Z","Z"), 
        y = c(.5,.9), 
        group = c("A","B")) 

ggplot(data = dat, aes(x = factor(x), y =pct)) + 
    geom_bar(aes(fill= subgroup), position = "stack", stat = "identity") + 
    facet_wrap(~group) + 
    geom_text(aes(x= x,y=y ,label=y), data = LABEL, vjust=-.2, size = 3)