ggplot2中的分面标签-第二行未显示

4
我有一个脚本,以前能够生成一个多行条带文本的分面图。但现在这个功能不再起作用了。下面是一个最小工作示例(MWE),其中的条带文本应该被解析为,例如:"bold(A)\nreally~long~extra",变成:

A
really long extra

正如您可以从调试函数中看到的那样,第二行被截断了。我甚至增加了边距,但没有效果...

有什么想法吗?

exmpl = data.frame(a = 1:100,
               b = rep(1:5, 20),
               f = factor(rep(LETTERS[1:5], each = 20))) %>% 
  as_tibble() %>% 
  mutate(f2 = paste0("bold(",f, ")\nreally~long~extra"))

ggplot(exmpl, aes(x = b, y = a)) +
  facet_grid(. ~ f2, labeller = label_parsed) +
  geom_point() +
  theme(strip.text.x = element_text(size = 10, hjust = 0, margin = margin(.5, 0, .5, 0, "cm"), debug = T))

编辑:

顺便提一下,我只想到这个解决方法是因为我之前使用 label_bquote() 的方法不再管用了。请看看这个问题,也许你也可以帮我解决?

在此输入图片描述

1个回答

5

不确定这是否适用于您。但是实现所需的结果的一种方法是使用ggtext包,该包允许您使用HTML和CSS样式化面板标签。为此,ggtext引入了一个新的主题元素element_markdown。请尝试以下内容:

library(ggplot2)
library(dplyr)

exmpl = data.frame(a = 1:100,
                   b = rep(1:5, 20),
                   f = factor(rep(LETTERS[1:5], each = 20))) %>% 
  as_tibble() %>% 
  mutate(f2 = paste0("<b>", f, "</b><br>", "really long extra"))


ggplot(exmpl, aes(x = b, y = a)) +
  facet_grid(. ~ f2) +
  geom_point() +
  theme(strip.text.x = ggtext::element_markdown(size = 10, hjust = 0))

对于您之前帖子中的第二个问题,一个解决方案可能如下:

mylabel <- function(x) {
  mutate(x, Species = paste0(letters[Species], " <i>", Species, "</i>"))
}

p <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point()

p + facet_grid(. ~ Species, labeller = mylabel) +
  theme(strip.text.x = ggtext::element_markdown())


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接