是否可以为ggplot2 facet_wrap
中使用的每个变量设置独立的条带主题?
以这段代码为例:
p1 <- ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(c("cyl", "drv"), labeller = "label_both")
plot(p1)
我希望上面的条带(&#39; cyl&#39;)具有不同的主题 - 比如粗体。另外,我可能想要制作&#39; drv&#39;斜体和不同的字体类型和大小。我怎么能这样做?
我正在考虑以下几点:
p1 <- p1 + theme(strip.text.variable1 = element_text(face = 'bold'),
strip.text.variable2 = element_text(face = 'italic', size = 8)
)
不幸的是,我无法在文档或之前的问题中找到类似的内容。
干杯
编辑:我提出的问题更为笼统,可以为社区提供进一步的帮助。
答案 0 :(得分:3)
表面上你应该能够基于label_both
创建一个新功能来返回粗体标签,但到目前为止,我的尝试已经以可怕的Error in variable[[i]] : subscript out of bounds
结束了。
另一种方法是构建一个函数来制作你想要的标签。这很像this answer。在此函数中,您可以为变量的值添加前缀并使其变为粗体。
make_labels = function(string, prefix = "cyl: ") {
x = paste0(prefix, as.character(string))
do.call(expression, lapply(x, function(y) bquote(bold(.(y)))))
}
现在在as_labeller
中使用此函数作为facet_wrap
中的“cyl”变量。您希望将as_labeller
中的默认标签符更改为label_parsed
,以便正确解析表达式。将label_both
用于其他变量。
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(c("cyl", "drv"),
labeller = labeller(cyl = as_labeller(make_labels, default = label_parsed),
drv = label_both))