首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用多个变量的ggplot2 facet_wrap的独立条带主题

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

Stack Overflow用户
提问于 2016-08-26 15:38:02
回答 1查看 1.2K关注 0票数 6

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

以这段代码为例:

代码语言:javascript
运行
复制
p1 <- ggplot(mpg, aes(displ, hwy)) +
   geom_point() +
   facet_wrap(c("cyl", "drv"), labeller = "label_both")
plot(p1)

我想要一个不同主题的上层(“cyl”)--比如说,用粗体表示。此外,我可能想让'drv‘斜体和不同的字体类型和大小。我怎么能这么做?

我在想:

代码语言:javascript
运行
复制
 p1 <- p1 + theme(strip.text.variable1 = element_text(face = 'bold'),
                  strip.text.variable2 = element_text(face = 'italic', size = 8)
                  )

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

干杯

编辑:我把这个问题做得更笼统一些,以便对社区有进一步的帮助。

EN

回答 1

Stack Overflow用户

发布于 2016-08-26 16:44:51

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

另一种替代方法是构建一个函数来生成您想要的标签。这很像this answer。在此函数中,将前缀添加到变量的值中,并使其粗体化。

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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))

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39169940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档