在ggplot2中,我可以自动将标题分成多行,而不是使用escape \ n吗?

时间:2015-11-02 18:31:12

标签: r ggplot2

我已经编写了一个函数来为包含数百个问题的大型数据集制作图表。所有图表都来自同一数据集,并从“图形标题”中将标题拉为字符串。 csv的列我已经读过。其中一些标题相当长,应分成两行。也许是因为他们来自csv,标题不会以\n转义,即使他们这样做,似乎应该有一个比添加{{1}更简单的方法} CSV中适当位置的每个变量名称。

有没有办法让我的功能自动分割标题行?我知道我可以改变标题的大小,但这会使它变得难以辨认

\n

1 个答案:

答案 0 :(得分:3)

以下是分解长字符串的两种方法:

  1. gsub('(.{1,10})(\\s|$)', '\\1\n', s)会将字符串s拆分为10分隔的\n行。
  2. 使用strwrap函数,width参数包含paste函数和collapse = \n参数。
  3. 通过示例更容易理解......

    long_title <- "This is a title that is perhaps too long to display nicely"
    
    gsub('(.{1,10})(\\s|$)', '\\1\n', long_title)
    # [1] "This is a\ntitle that\nis perhaps\ntoo long\nto display\nnicely\n"
    
    paste(strwrap(long_title, width = 10), collapse = "\n")
    # [1] "This is a\ntitle\nthat is\nperhaps\ntoo long\nto\ndisplay\nnicely"
    

    N.B。我相信strwrap和/或stringi包中的stringr处理得更优雅(并且有效地猜测)(请参阅stringi::stri_wrapstringr::str_wrap)。