如何更改 R 华夫饼图中 "tile grout" 的颜色以匹配背景

How to change color of "tile grout" in R waffle plot to match background

我正在尝试制作华夫饼图以使用深色模式。这涉及更改背景颜色和瓷砖灌浆的颜色。我不知道该怎么做瓷砖灌浆。

我无法执行任何更改颜色的正常操作:

counts <- c(a = 701, b = 1094, c = 1756)
waffle(counts, 
   rows=50,
   size=0.75,
   legend_pos="bottom") + theme(legend.key.size=unit(3, "mm"),
                                rect=element_rect(fill='black',
                                                  color='black'),
                                plot.background=element_rect(fill='black'),
                                strip.background = element_rect(colour=NA, fill=NA),
                                panel.background=element_rect(fill='black', color='black'))

有一个 pull request 可以做到这一点,但制作它的人删除了它。似乎每个瓷砖的颜色都设置为边距颜色,因为如果您将华夫饼函数参数 size 增加到 size=0,您就不会得到瓷砖灌浆:

如何让瓷砖灌浆与背景一样黑?

这看起来很老套,但您可以在打印前在 ggplot 对象中编辑您需要的内容。

library('waffle')
counts <- c(a = 701, b = 1094, c = 1756)
x <- waffle(counts, 
       rows=50,
       size=0.75,
       legend_pos="bottom") + theme(legend.key.size=unit(3, "mm"),
                                    rect=element_rect(fill='black',
                                                      color='black'),
                                    plot.background=element_rect(fill='black'),
                                    strip.background = element_rect(colour=NA, fill=NA),
                                    panel.background=element_rect(fill='black', color='black'))

x$layers[[1]]$aes_params$colour <- 'black'
x

更像“ggplot 方式”的是 editing/replacing 层:

x %+replace% geom_tile(inherit.aes = TRUE, color = 'black')

但这不起作用。我不确定您是否可以替换层 in-place 而不会弄乱顺序。但这实际上就是黑客所做的。