假设我有数据框d
(下面有dput
)。我想用Task
和Event
填充的填充条绘制它,并使用组成每个条形的值的数量进行注释。
ggplot(inter2, aes(Aud, fill = value)) +
geom_bar(position = 'fill') +
facet_grid(Task~Event) +
annotate('text', label = as.character(table(inter2$Aud)), x = 1:nlevels(inter2$Aud), y = 1)
问题是我无法弄清楚如何在label
内安排annotate()
向量。
如果我只使用facet_grid()
那么我得到了分面:
ggplot(inter2, aes(Aud, fill = value)) +
geom_bar(position = 'fill') +
facet_grid(Task~Event)
如果我只使用annotate()
,那么我会得到数字:
ggplot(inter2, aes(Aud, fill = value)) +
geom_bar(position = 'fill') +
annotate('text', label = as.character(table(inter2$Aud)), x = 1:nlevels(inter2$Aud), y = 1)
但我无法弄清楚如何设置label
的{{1}}参数与annotate()
一起使用。有什么帮助吗?
facet_grid
答案 0 :(得分:3)
您必须预先处理数据以使用facetting变量生成geom_text图层,
library(plyr)
d2 <- ddply(d, .(Task, Event), function(.d) data.frame(table(.d$Aud, dnn=list("Aud"))))
ggplot(d, aes(Aud, fill = value)) +
geom_bar(position = 'fill') +
facet_grid(Task~Event) +
geom_text(data=d2, aes(Aud, y=1, label=Freq),
vjust=1, fontface=4, col="white", inherit.aes=FALSE) +
theme(axis.text.x=element_text(angle = 90, hjust=1, vjust=0.5))