ggplot2有一种简单的方法来包装注释文本吗?

时间:2014-08-03 16:05:29

标签: r ggplot2

我目前正在使用ggplot2和注释功能,文档中的示例如下所示。我有足够的宽度来注释未知长度的文本,并且需要一种自动方式将其包含在某些x_startx_end值中。由于我不想更改字体大小,因此我还需要根据引入的中断数量来移动y值。有没有一种简单的方法可以实现这一目标?

# install.packages(c("ggplot2"), dependencies = TRUE)
require(ggplot2)
p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point()
p + annotate("text", x = 4, y = 25, label = "Some arbitrarily larger text")

2 个答案:

答案 0 :(得分:4)

也许来自splitTextGrob包的RGraphics函数可以提供帮助。这将根据绘图窗口的宽度包装文本。

library(RGraphics)
library(ggplot2)


p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point()

grob1 <-  splitTextGrob("Some arbitrarily larger text")

p + annotation_custom(grob = grob1,  xmin = 3, xmax = 4, ymin = 25, ymax = 25) 

答案 1 :(得分:3)

仅使用baseggplot2的替代解决方案。

根据您上面提到的内容构建

# First a simple wrapper function (you can expand on this for you needs)
wrapper <- function(x, ...) paste(strwrap(x, ...), collapse = "\n")
# The a label
my_label <- "Some arbitrarily larger text"
# and finally your plot with the label
p + annotate("text", x = 4, y = 25, label = wrapper(my_label, width = 5))