1

这是一个通用问题,基于 ggplot 中的 facet_wraps() 我们在下面的链接中看到例如: ggplot by hadley/staticdocs

有没有办法从 facet_wrap 的每个面板获取数据的 summary() 或者我们应该编写一个函数来获取那种信息?

例如,让我们考虑上面链接中的情节:

p + geom_point(data = transform(cyl6, cyl = NULL), colour = "red") + facet_wrap(~ cyl)

我们如何得到每个面板中红点和黑点的百分比?

4

1 回答 1

1

我会推荐上述方法的组合。值得注意的是,提前指定您想要的颜色会很有帮助,这样可以更轻松地控制输出和汇总统计信息。

例如,我会根据这样的规则指定你的颜色(你上面的代码似乎不起作用):

my_mpg <- transform(mpg, dot_color = ifelse(hwy > 20, 'red','black'))

然后绘制数据并手动指定颜色:

ggplot(my_mpg,aes(x=displ,hwy)) + geom_point(aes(color=dot_color)) + 
       facet_wrap(~cyl) + scale_color_manual(values=c('black','red'))

对于汇总统计数据,我认为data.table提供了最好的界面:

library(data.table)
my_mpg <- as.data.table(my_mpg)
my_mpg[,list(percent_black = sum(dot_color=='black') / .N),by=cyl]

##    cyl percent_black
## 1:   4    0.04938272
## 2:   6    0.32911392
## 3:   8    0.84285714
## 4:   5    0.00000000
于 2014-04-11T23:24:07.007 回答