ggplot2构面标签-不显示第二行 编辑:

问题描述

我有一个脚本,用于生成带有多行带状文本的多面图。但是,这不再起作用了。以下是MWE,应从中解析带状文本,例如"bold(A)\nreally~long~extra"至:

A
真的很长

您可以通过调试功能看到第二行。我什至提高了利润率,但无济于事...

有什么问题吗?

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,.5,"cm"),debug = T))

enter image description here

编辑:

在进行此操作时,我只想出了此解决方法,因为我以前使用label_bquote()解决方案不再起作用。请查看this other question,也许您也可以帮助我吗?

解决方法

不确定是否适合您。但是,达到预期结果的一种方法是使用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())