2015-09-21 7 views
0

Я пытаюсь построить график по группам в R, используя ggplot2 следующим образом. Он предназначен для печати в градациях серого.ggplot2 категориальных данных - оттенок серого/тема BW для повышения удобочитаемости

library(ggplot2) 

# Summarise data 
mry <- do.call(rbind, by(movies, round(movies$rating), function(df) { 
    nums <- tapply(df$length, df$year, length) 
    data.frame(rating=round(df$rating[1]), year = as.numeric(names(nums)), number=as.vector(nums)) 
})) 

p <- ggplot(mry, aes(x=year, y=number, colour=factor(rating))) 
p + geom_line() + scale_color_grey() + theme_bw() 

enter image description here

Однако ясность отсутствует в полученном участке, поскольку есть 10 групп, участвующих. Как настроить цвет/стиль pch/line в ggplot2 для лучшей читаемости в таком случае, когда задействовано большое количество групп?

+3

Я думаю, что это действительно зависит от сообщения, которое вы хотите передать своим сюжетом. 10 групп трудно отличить по цвету, не говоря уже о серых тонах. Тип линии по группам может быть выполнен, но не делает его более различимым. Есть ли какая-то конкретная группа, которую вы хотите показать? – Heroka

+0

@Heroka Я хочу показать тенденцию всех групп на протяжении многих лет. Ищете лучший способ запечатлеть это. – Crops

+2

Возможно, это три категории? Высокий, средний и низкий? – Axeman

ответ

1

я был бы склонен использовать фасетки, как это:

ggplot(mry, aes(x=year, y=number))+ 
    geom_line() + 
    scale_color_grey() + 
    theme_bw() + 
    facet_grid(rating~.) 

Очевидно, что это будет лучше в портретном режиме, но даже в этом маленьком масштабе вы можете сказать, что рейтинги 1,2,3,9 и 10 крайне редки, а наиболее распространенные рейтинги - 6 и 7 (по крайней мере, недавно). Это намного больше, чем вы можете получить от построения всего, что находится поверх друг друга.

1

Возможность улучшить читаемость - использовать linetype вместо colour. Но все же, 10 групп, вероятно, слишком много. Вы могли бы попытаться добавить различные формы точек с geom_point

p <- ggplot(mry, aes(x=year, y=number, linetype =factor(rating))) 
p + geom_line() + scale_color_grey() + theme_bw() 
Смежные вопросы