使用多个变量的ggplot2 facet_wrap的独立条带主题

Ric*_*nus 6 r ggplot2 facet-wrap

是否可以为ggplot2中使用的每个变量设置独立的条带主题facet_wrap

以这段代码为例:

p1 <- ggplot(mpg, aes(displ, hwy)) +
   geom_point() +
   facet_wrap(c("cyl", "drv"), labeller = "label_both")
plot(p1)
Run Code Online (Sandbox Code Playgroud)

绘图输出

我希望上面的条带('cyl')具有不同的主题 - 比方说,用粗体.另外,我可能想制作'drv'斜体并使用不同的字体类型和大小.我怎么能这样做?

我正在考虑以下几点:

 p1 <- p1 + theme(strip.text.variable1 = element_text(face = 'bold'),
                  strip.text.variable2 = element_text(face = 'italic', size = 8)
                  )
Run Code Online (Sandbox Code Playgroud)

不幸的是,我在文档或之前的问题中找不到这样的内容.

干杯

编辑:我提出了一个更普遍的问题,以进一步帮助社区.

aos*_*ith 4

表面上你应该能够创建一个基于label_both返回粗体标签的新函数,但到目前为止我的尝试已经以可怕的Error in variable[[i]] : subscript out of bounds.

另一种方法是构建一个函数来制作您想要的标签。这很像这个答案。在此函数中,您将前缀添加到变量的值中并将其设置为粗体。

make_labels = function(string, prefix = "cyl: ") {
    x = paste0(prefix, as.character(string))
    do.call(expression, lapply(x, function(y) bquote(bold(.(y)))))
}
Run Code Online (Sandbox Code Playgroud)

现在将此函数用于 中的as_labeller“cyl”变量facet_wrap。您想要更改其中的默认标签器as_labellerlabel_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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述