我在ggplot2中包装长文本时遇到问题。类似的问题在这里被问到ggplot2 is there an easy way to wrap annotation text?
我的问题是,如果我们有这样的文字
my_label <- "Some_arbitrarily_larger_text"
我们如何使用相同的方法缩小它?
wrapper <- function(x, ...) paste(strwrap(x, ...), collapse = "\n")
library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point()+
annotate("text", x = 4, y = 25, label = wrapper(my_label, width = 5))
这种情况似乎无效!
答案 0 :(得分:2)
您也可以致电stringr::str_wrap()
,代码:
library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point()+
annotate("text", x = 4, y = 25, label = stringr::str_wrap(my_label, 5))
但是,如果这是你正在寻找的东西,我不会认为其中任何一个会破坏一个单词。
答案 1 :(得分:1)
使用Unicode零宽度空格并用_
+替换所有_
:
library(stringi)
library(ggplot2)
my_label <- "Some_arbitrarily_larger_text"
my_label <- stri_replace_all_fixed(my_label, "_", "_\U200B")
肉眼看来它是连续的:
my_label
## [1] "Some_arbitrarily_larger_text"
但是,从编程方面来说,这是一个分词/包装机会:
wrapper <- function(x, ...) paste(stri_wrap(x, ...), collapse = "\n")
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
annotate("text", x = 4, y = 25, label = wrapper(my_label, width = 5))