Построить многострочное текстовое поле в R - PullRequest
7 голосов
/ 16 февраля 2012

Я создаю многосюжетную иллюстрацию макета с использованием R, и было бы удобно иметь возможность создавать многострочное текстовое поле на одном из графиков.

Я знаком с использованием Sweave дляобъединять изображения, текст и R-код, однако по разным причинам мне нужно, чтобы это был одностраничный сюжет, созданный в R. Таким образом, необходимо построить текстовое поле, а не использовать разметку латексом.

Есть ли функция в существующем пакете, которая может сделать это?Если это не удастся, кто-нибудь может предложить простой подход для решения этой проблемы?

Рассмотрим следующую ситуацию:

## Specify the dimensions of the plot
## that we require
win.graph(8,4)

## Two panel layout
layout(matrix(1:2, 1, 2))
par(mar=c(0,0,0,0))

## Left panel shows picture
plot(rep(1:10, each=10), rep(1:10, times=10), 
col=rainbow(100), pch=20, cex=5)


## Right panel discusses the data
plot.default(c(0,100), c(0,100), type="n", axes=FALSE,
ylab="", xlab="")

text(20, 30, "It would be great if this text box\n
could handle word wrap, and ideally given the size\n
of the font (i.e. the cex parameter) and the area\n
of the plot it should be able to do this dynamically,\n
without requiring the newline characters I am\n
manually inserting.  Ability to control the line\n
height would also be nice.\n
Am I dreaming?", cex=0.75, adj=c(0,0))

Output from example

Ответы [ 2 ]

6 голосов
/ 16 февраля 2012

Попробуйте splitTextGrob() из графической книги R

text = paste(capture.output(licence()),collapse=" ")
library(RGraphics)
library(gridExtra)

grid.arrange(rectGrob(), splitTextGrob(text), ncol=2)

d <- expand.grid(seq(0.1, 0.9, length=10), seq(0.1, 0.9, length=10))
grid.arrange(pointsGrob(d[, 2], d[, 1], pch=21, 
 gp=gpar(fill=rainbow(100))), splitTextGrob(text), ncol=2)

enter image description here

(попробуйте изменить размер окна)

Этот подход основан на сетке графики, вы можете либо

  • используйте решетку / ggplot2 / grid для графиков

  • используйте пакет gridBase для размещения базовой графики в окнах просмотра сетки

2 голосов
/ 16 февраля 2012

Некоторые другие опции для просмотра (вы можете адаптировать код в одной из этих функций) включают функцию textplot в пакете gplots и addtable2plot в пакете plotrix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...