2013-11-12 4 views
14

Любопытно, как можно создать сюжет с только текстовой информацией. По существу это будет «печать» для окна графика.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's in the plot window", 
      "  One might imagine useful informaiton here") 
    grid.arrange(splitTextGrob(text)) 


enter image description here


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

+1

вам не нужно 'grid.arrange' или' gridExtra', просто 'grid.draw()' – baptiste

ответ

28

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

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 - Display Annotoations (установлен в FALSE)
  • BTY - не Пограничный тип (нет)
  • тип - участок Тип (тот, который не производит никаких точек или линий)
  • xaxt - х типа оси (отсутствует)
  • yaxt - у (нет)

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

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's 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) 

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

+1

Также полезно , вот ссылка на советы по реализации различных шрифтов/шрифтов здесь: http://www.statmethods.net/advgraphs/parameters.html - Спасибо за отзыв! – EconomiCurtis

+1

Кроме того, чтобы добавить информацию вправо и влево, в текстовой (...) функции: «adj = 1» => left justify, «adj = 0» => right justify, «adj = NULL» (по умолчанию) => center – EconomiCurtis

+0

Re Center Adjustment, я ошибся выше. Центральная регулировка «adj = 0,5» – EconomiCurtis

6

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

library(ggplot2) 
text = paste("\n The following is text that'll appear in a plot window.\n", 
     "  As you can see, it's 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

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

1

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

6

Вот удобный пример играть тоже:

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

Смежные вопросы