在ggplot facet_grid

时间:2015-10-19 18:54:35

标签: r ggplot2 facet

问题
如何为每个面使用不同的调色板?理想情况下,我希望有一个灰色的通用图例作为参考。

我正在使用ggplot的facet_grid进行可视化工作。布局很好,但我想为网格中的每一行使用不同的调色板。我的目标是为每个调色板使用类似阴影的渐变,然后将它们与灰度图例结合在一起。我想这样做是为了在更大的图形集中保持内部颜色编码的一致性。能够仍然使用facet_grid而不是使用grobs(我非常不熟悉)会很棒。

我已经提供了一个示例,可以使用钻石数据集和任意分组来近似我的数据。

data(diamonds) 
diamonds$arbitrary = sample(c("A", "B", "C"), length(diamonds$cut), replace = TRUE)

blues = brewer.pal(name="Blues", n=3)
greens = brewer.pal(name="Greens", n=3)
oranges = brewer.pal(name="Oranges", n=3)
purples = brewer.pal(name="Purples", n=3)

ggplot(diamonds) + 
  geom_bar(aes(x = clarity, stat = "bin", fill = arbitrary, group = arbitrary)) + 
  facet_grid(cut~.) + 
  # Here I assign one palette... is this where I could also
  # designate the other palettes?
  scale_fill_manual(values = blues)

enter image description here

谢谢!

1 个答案:

答案 0 :(得分:14)

伪造具有透明度的色标可能是您的最佳选择,除非您愿意在网格/ gtable级别组合多个部分。

ggplot(diamonds) + 
  geom_bar(aes(x = clarity, stat = "bin", fill = cut, 
               alpha=arbitrary, group = arbitrary)) + 
  facet_grid(cut~.) + 
  scale_fill_manual(values = brewer.pal(name="Set1", n=5), guide="none") +
  scale_alpha_manual(values=c(0.8, 0.6, 0.4))

enter image description here