36

可能重复:
使用 ggplot2 创建一个 facet_wrap 图,每个图中带有不同的注释
将文本添加到 ggplot2 中的多面图,X 轴上带有日期

偶尔在 ggplot 中对数据进行分面时,我认为最好用落入每个方面的观察数量来注释每个方面。当刻面可能导致每个刻面的观察相对较少时,这一点尤其重要。

向该图的每个方面添加“n = X”的最佳/最简单方法是什么?

require(ggplot2)
mms <- data.frame(deliciousness = rnorm(100),
                  type=sample(as.factor(c("peanut", "regular")), 100, replace=TRUE),
                  color=sample(as.factor(c("red", "green", "yellow", "brown")), 100, replace=TRUE))


plot <- ggplot(data=mms, aes(x=deliciousness)) + geom_density() + facet_grid(type ~ color)
4

1 回答 1

50

看起来以前有人问过这个问题,但我最初没有看到它们是如何连接的。我在这里回答这个问题,但不接受它,以防有人有更优雅的东西。此外,n = foo 是一个很常见的情况,希望有人能从这个问题中得到一些用处,即使它有点重复。

require(ggplot2)
require(plyr)
mms <- data.frame(deliciousness = rnorm(100),
                  type=sample(as.factor(c("peanut", "regular")), 
                              100, replace=TRUE),
                  color=sample(as.factor(c("red", "green", "yellow", "brown")), 
                              100, replace=TRUE))


mms.cor <- ddply(.data=mms, 
                 .(type, color), 
                 summarize, 
                 n=paste("n =", length(deliciousness)))

plot <- ggplot(data=mms, aes(x=deliciousness)) + 
          geom_density() + 
          facet_grid(type ~ color) + 
          geom_text(data=mms.cor, aes(x=1.8, y=5, label=n), 
                    colour="black", inherit.aes=FALSE, parse=FALSE)

plot

输出

于 2012-11-05T23:07:24.733 回答