ggplot 中各个方面的单独调色板 facet_grid

Separate palettes for facets in ggplot facet_grid

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

我正在使用 ggplot facet_grid 进行可视化。布局很好,但我想为网格中的每一行使用不同的调色板。我的目标是为每个调色板使用类似阴影的渐变,然后将它们与灰度图例联系在一起。我想这样做是为了在更大的一组图形中保持内部颜色编码的一致性。能够仍然使用 facet_grid 而不是使用 grobs(我对 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)

谢谢!

伪造具有透明度的色标可能是您的最佳选择,除非您愿意在 grid/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))