Добавить текст с несколькими переносами строк и курсивом к графику в R - PullRequest
0 голосов
/ 17 февраля 2019

Я хочу добавить несколько строк текста к сюжету, в котором некоторые слова выделены курсивом.Вот как должен выглядеть текст:

Курсивный текст: Некоторые
слова с
новыми строками.

Больше курсиватекст: Все же
больше слов, разделенных
новыми строками.

Снова курсив: И еще
текст с
новыми строками.

Следующий код печатает одну строку текста курсивом:

plot(c(0, 2), c(0, 2))
text(1, 1, bquote(
        paste(
            italic("Italic Text:"),
            " Some words with new lines. ",
            italic("More italic text:"),
            "Yet more words divided by new lines. ",
            italic("Italics again:"),
            "And more text with new lines.",
            sep = ""
        )
    )
)

enter image description here

И это создает разрывы строк, нобез курсива:

plot(c(0, 2), c(0, 2))
text(1, 1, "Italic Text: Some\nwords with\nnew lines.\n\nMore italic text: Yet\nmore words divided\nby new lines.\n\nItalics again: And more\ntext with\nnew lines.")

enter image description here

Но когда я пытаюсь разбить текст на строки и добавить курсив, символы новой строки приводят к странным результатам:

plot(c(0, 2), c(0, 2))
text(1, 1, bquote(
        paste(
            italic("Italic Text:"),
            " Some\nwords with\nnew lines.\n\n",
            italic("More italic text:"),
            "Yet\nmore words divided\nby new lines.\n\n",
            italic("Italics again:"),
            "And more\ntext with\nnew lines.",
            sep = ""
        )
    )
)

enter image description here

atop(), как предлагается в других ответах, работает только с двумя строками.

Что такоеСамый простой способ добавить несколько строк текста с несколькими словами курсивом к графику?

  • В идеале, используя только основание R.
  • И без болезненного позиционирования каждой строки текстаотдельно.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Я не знаю курсивного задания ... но тот пакет, который я написал, может помочь вам:

devtools::install_github("igorkf/breaker")
library(breaker)

nbreak("Some text that you want and the italic stuff", n = 3)
#[1] "Some text that\nyou want and\nthe italic stuff"

#You can also use this with purrr:
purrr::map_chr(list("the first text that you want",
                    "the second text that you want",
                    "the third text that you want"),
                  ~nbreak(.x, n = 2))
#[1] "the first\ntext that\nyou want"  "the second\ntext that\nyou want" "the third\ntext that\nyou want"

Вы также можете сломать только один раз, используя loop = F

0 голосов
/ 17 февраля 2019

Мы можем использовать substitute(), чтобы объединить курсив и обычный текст. Для выравнивания текста по левому краю мы можем использовать параметр pos=4.тогда мы можем, мы можем возиться вместе, как это.

plot(c(0, 2), c(0, 2))
text(1, 1.9, substitute(paste(italic("Italic:"), " Some")), pos=4)
text(1, 1.7, "words with\nnew lines.", pos=4)
text(1., 1.4, substitute(paste(italic("More italic text:"), " Yet")), pos=4)
text(1, 1.21, "words with\nnew lines.", pos=4)
text(1., .9, substitute(paste(italic("Italics again:"), " And more")), pos=4)
text(1, .71, "text with\nnew lines.", pos=4)

enter image description here

Примечание: При экспорте немного сдвигается,Я экспортировал рисунок с разрешением 500х500.

...