R - Только текст графика

Любопытно, как можно создать сюжет с только текстовой информацией. По существу это будет "печать" для окна графика.

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

  library(RGraphics)
  library(gridExtra)

    text = paste("\n   The following is text that'll appear in a plot window.\n",
           "       As you can see, it in the plot window",
           "       One might imagine useful informaiton here")
    grid.arrange(splitTextGrob(text))


enter image description here


Тем не менее, у меня нет контроля (насколько я могу судить) по типу шрифта, его размеру, обоснованию и т.д.

Ответы

Ответ 1

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

par(mar = c(0,0,0,0))

И тогда вы построите пустой сюжет:

plot(c(0, 1), c(0, 1), ann = F, bty = 'n', type = 'n', xaxt = 'n', yaxt = 'n')

Здесь приводится описание того, что происходит здесь (используйте ?plot.default и ?par для более подробной информации):

  • ann - отображать аннотации (установлено в FALSE)
  • bty - Тип границы (none)
  • тип - Тип графика (тот, который не создает точек или линий)
  • xaxt - тип оси x (нет)
  • yaxt - тип оси y (нет)

Теперь нарисуем текст. Я достал лишние пробелы, потому что они не казались необходимыми.

text(x = 0.5, y = 0.5, paste("The following is text that'll appear in a plot window.\n",
                             "As you can see, it in the plot window\n",
                             "One might imagine useful informaiton here"), 
     cex = 1.6, col = "black")

enter image description here

Теперь, чтобы восстановить настройки по умолчанию

par(mar = c(5, 4, 4, 2) + 0.1)

Я надеюсь, что это поможет!

Ответ 2

Вы можете использовать annotate в ggplot2, например

library(ggplot2)
text = paste("\n   The following is text that'll appear in a plot window.\n",
         "       As you can see, it in the plot window\n",
         "       One might imagine useful informaiton here")
ggplot() + 
  annotate("text", x = 4, y = 25, size=8, label = text) + 
  theme_bw() +
  theme(panel.grid.major=element_blank(),
    panel.grid.minor=element_blank())

enter image description here

И вы можете, конечно, удалить поля, оси и т.д., чтобы иметь только текст

Ответ 3

Здесь также удобный пример:

par(mar = c(0,0,0,0))
plot(c(0, 1), c(0, 1), ann = F, bty = 'n', type = 'n', xaxt = 'n', yaxt = 'n')

text(x = 0.34, y = 0.9, paste("This is a plot without a plot."), 
     cex = 1.5, col = "black", family="serif", font=2, adj=0.5)

text(x = 0.34, y = 0.6, paste("    Perhpas you'll:"), 
     cex = 1.2, col = "gray30", family="sans", font=1, adj=1)
text(x = 0.35, y = 0.6, paste("Find it helpful"), 
     cex = 1.2, col = "black", family="mono", font=3, adj=0)

enter image description here

Ответ 4

Прочитайте ?par. Существует ограниченная возможность выбора типа шрифта с помощью аргументов family и font.