考虑以下带有长面/带状文本的ggplot2图
分为两行。
文字超出了有关刻面标题的区域。

library(ggplot2)
x <- c(1:3, 1:3)
y <- c(3:1, 1:3)
grp <- c(0, 0, 0, 1, 1, 1)
p <- qplot(x=x, y=y) + geom_line() + facet_wrap(~ grp)
grob <- ggplotGrob(p)
strip.elem.y <- grid.ls(getGrob(grob, "strip.text.x",
                grep=TRUE, global=TRUE))$name
grob <- geditGrob(grob, strip.elem.y[1],
        label="First line and\n second line" )
grid.draw(grob)


有没有办法增加带状文字区域的高度?

最佳答案

我尝试了多种方法,但是对于使用paste(strwrap(text, width=40), collapse=" \n")为单行数据提供结果而不是将整个列表中的每一行文本都连接起来感到沮丧。

我想出了一个最适合我的解决方案。我写了下面的函数。给定具有列data的数据框text

wrapit <- function(text) {
  wtext <- paste(strwrap(text,width=40),collapse=" \n ")
  return(wtext)
}

data$wrapped_text <- llply(data$text, wrapit)
data$wrapped_text <- unlist(data$wrapped_text)


调用此函数后,我只是将labeller函数应用于了wrapped_text列而不是text列。

关于r - ggplot2:将构面/带状文本分成两行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9052650/

10-12 17:59