这是一个通用的问题,基于ggplot中的facet_wraps(),我们在下面的链接中看到ex: ggplot by hadley/staticdocs
有没有办法从facet_wrap的每个面板获取数据的summary(),或者我们应该编写一个函数来获取那种信息?
例如,让我们考虑上面链接中的情节:p + geom_point(data = transform(cyl6, cyl = NULL), colour = "red") + facet_wrap(~ cyl)
我们如何从每个面板中得到红色与黑色点的百分比?
答案 0 :(得分: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