下面是我在ggplot 2中使用面包裹为美国各州绘制回归线的代码:
ggplot(data = allYearsSlope, aes(x = year, y = residual)) +
geom_smooth(method = "lm", se = FALSE) +
facet_wrap(~ state, ncol = 8) +
theme(
strip.text = element_text(size = rel(0.5), face = "bold"),
panel.background = element_rect(fill = "white"),
panel.border = element_rect(color="purple",fill=NA),
plot.background = element_blank(),
axis.ticks.x = element_blank()
) +
scale_x_continuous(labels = NULL)
它运行良好,但现在我尝试根据存储在包含其余数据的 Dataframe 中的值(“blue”或“绿色”)为facet面板标签(在本例中,包含每个面板上方显示的状态名称的框)着色。颜色存储在allYearsSlope$panelColor中。很难弄清楚如何执行此操作。
我在这里读过解决方案:Conditional formatting of panel background in GGplot2。沿着它所指的其他一些SO答案。但我真的看不到从这些答案中得出的方法。有人有什么想法吗?
非常感谢你的帮助。
1条答案
按热度按时间kcrjzv8t1#
据我所知,最简单的方法是使用
ggh4x
包:创建于2022年12月24日,使用reprex v2.0.2
不可能将条带颜色Map为一种美学效果,所以这需要通过编写自己的自动化来完成。我们可以创建一个
element_rect
列表,而不是手动传递一个element_rect
列表,其填充颜色取决于每个分面子集的回归属性。这并不像听起来那么棘手。例如,我们根据板中回归线的斜率将条带着色-〈0.5为红色,〉0.5为绿色: