Для фактора с более чем разумным количеством уровней для раскрашивания на графике я хочу заменить любые уровни, не входящие в «10 лучших», на «другие» '.
Альтернативный вопрос: Как уменьшить уровни фактора до числа, которое rcolorbrewer может отобразить как отдельные цвета?
Например, если я хочу изобразить количество хоумранов за десятилетие по бейсбольным данным:
require(ggplot2)
qplot(data=baseball,10*year%/%10,hr,
stat="identity",geom="bar")
Возможно, мне хотелось бы увидеть, какие команды внесли свой вклад в это:
qplot(data=baseball,10*year%/%10,hr,
fill=team,
stat="identity",geom="bar")
Это создает слишком много уровней цвета! Цвета настолько похожи, что их невозможно различить, и их так много, что они не помещаются на экране.
Мне бы очень хотелось увидеть топ-X (7) команд (по общему количеству хоумранов) и затем все остальные сгруппированы в одну категорию / цвет под названием «другое».
Давайте представим, что у нас есть функция с именем hotfactor
, которая знает, как это сделать:
hotfactor(afactor,orderby,count)={ ??? }
qplot(data=baseball,10*year%/%10,hr,
fill=hotfactor(factor(team),hr,n=7),
stat="identity",geom="bar") +
scale_fill_brewer("team","Dark2")
Итак, что я могу использовать для 'hotfactor'?