gpt4 book ai didi

r - 使用多个变量的 ggplot2 facet_wrap 的独立 strip 主题

转载 作者:行者123 更新时间:2023-12-03 14:40:05 24 4
gpt4 key购买 nike

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

以这段代码为例:

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

Plot output

我想要一个不同主题的上条('cyl') - 比如,粗体。此外,我可能希望将 'drv' 设为斜体并使用不同的字体类型和大小。我怎么能那样做?

我在想以下几点:
 p1 <- p1 + theme(strip.text.variable1 = element_text(face = 'bold'),
strip.text.variable2 = element_text(face = 'italic', size = 8)
)

不幸的是,我在文档或以前的问题中找不到这样的东西。

干杯

编辑:我提出了更笼统的问题,以进一步帮助社区。

最佳答案

从表面上看,您应该能够基于 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))

enter image description here

关于r - 使用多个变量的 ggplot2 facet_wrap 的独立 strip 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com