2023年更新:
现在有一个很棒的包,ggh4x
by @teunbrand
相关问题见this answer
Q:在ggplot中,如何根据组修改面背景的颜色?
面背景可以有一种以上的颜色吗?
示例:
我使用facet_grid
(不是facet_wrap
)和多层。
## Sample data
dat <- mtcars
## Add in some colors based on the data
dat$facet_fill_color <- c("red", "green", "blue", "yellow", "orange")[dat$gear]
## Create main plot
library(ggplot2)
P <-
ggplot(dat, aes(x = cyl, y = wt)) +
geom_point(aes(fill = hp)) +
facet_grid(gear + carb ~ .)
所有条带的背景可使用以下命令更改:
P + theme(strip.background = element_rect(fill="red"))
主要挑战:
但是,我想为不同的群体改变不同的颜色。
类似以下的东西(当然这是行不通的)
P + theme(strip.background = element_rect(fill=dat$facet_fill_color))
P + theme(strip.background = element_rect(aes(fill=facet_fill_color)))
- 相关,但不是当前问题的实际答案 * ggplot2: facet_wrap strip color based on variable in data set)
4条答案
按热度按时间ve7v8dk21#
无论如何,适应以前的gtable hack是非常直接的。
gywdnpxw2#
这感觉就像一个可怕的黑客的事情做(到某种程度上,我几乎不好意思张贴这作为一个 * 答案 *),但它是可能的...
slmsl1lt3#
受@SimonO'Hanlon的解决方案启发的替代搜索和替换策略,
jvlzgdj94#
有一个非常好和简单的答案隐藏在类似的问题ggplot2: facet_wrap strip color based on variable in data set中,避免了黑客攻击,尽管你仍然需要在strip_themed()中手动指定你想要的颜色。