我目前正在使用ggplot2和注释功能,文档中的示例如下所示。我有足够的宽度来注释未知长度的文本,并且需要一种自动方式将其包含在某些x_start
和x_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")
答案 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)
仅使用base
和ggplot2
的替代解决方案。
根据您上面提到的内容构建
# 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))