我会推荐上述方法的组合。值得注意的是,提前指定您想要的颜色会很有帮助,这样可以更轻松地控制输出和汇总统计信息。
例如,我会根据这样的规则指定你的颜色(你上面的代码似乎不起作用):
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