Ggplot2: отдельная цветовая шкала на грань

Интуитивно я ищу что-то вроде: facet_(scales="free_color")

Я делаю что-то вроде

p <- ggplot(mpg, aes(year, displ, color=model)) + facet_wrap(~manufacturer)
p + geom_jitter()

То есть: вывести 2d измерения от индивидуумов (model), принадлежащих к разным видам (manufacturer), гранями которых являются виды, указывающие на индивидуальность по цвету. Проблема в том, что все люди имеют одну и ту же цветовую шкалу, так что точки в фасетке имеют очень похожие цвета.

Использование групповой эстетики с geom_line решит проблему, но строки расскажут разные истории, чем точки.

Другим очевидным решением было бы отказаться от огранки и нарисовать отдельный график для каждого подмножества. (Если это должно быть единственным решением: есть ли быстрые, умные или проверенные способы сделать это?)

Ответ 1

Я не уверен, что это доступный вариант, когда вы раскрашиваете фактор. Однако быстрый способ создания отдельных сюжетов будет примерно таким:

d_ply(mpg, .(manufacturer), function(df) {
jpeg(paste(df$manufacturer[[1]], ".jpeg", sep=""))
plots <- ggplot(df, aes(year, displ, color=factor(model))) + geom_jitter()
print(plots)
dev.off()
})

Ответы на вопросы: Различные легенды и цвета заливки для граненых ggplot?

Ответ 2

Я думаю, вы просто хотите покрасить по классам, где каждый производитель выпускает несколько моделей, каждый из которых один или два на класс:

p <- ggplot(mpg, aes(year, displ, color=class)) + facet_wrap(~ manufacturer)
p + geom_jitter()

alt text