我想绘制一个简单的图形。我有一个带有n个rown和k列的数据集,其中每一行都有一个0和1的序列。我想为所有行准确地绘制这个序列。
实际上我想重现图24.1,p。 516,Gelman和Hill的书(Data aAnalysis Using Regression and Multilevel / Hierarchical Models)。我怀疑他在Latex中制作了图形,但是我无法在R中复制这个简单的图形似乎很荒谬。图像是like this。正如您从链接中看到的那样,“ones”被“S”替换,“0”被“。”替换。这是一个简单的图形,但它按时间显示每个单独的响应。
答案 0 :(得分:4)
我会使用sprintf
使用带格式的文本输出。更清洁,更简单。如果你还想要一个情节,你可以选择以下内容:
给定包含您数据的矩阵tbl
:
tbl <- matrix(data=rep(0:1,25), nrow=5)
您可以生成以下情节:
plot(1, 1, xlim=c(1,dim(tbl)[2]+.5), ylim=c(0.5,dim(tbl)[1]), type="n")
lapply(1:dim(tbl)[1], function(x) {
text(x=c(1:dim(tbl)[2]), y=rep(x,dim(tbl)[2]), labels=tbl[x,])
})
使用此作为基础,您可以使用text
并使用args
绘图,以便按照您希望的方式对绘图进行样式化。
答案 1 :(得分:3)
以下是两种可能的解决方案,基于使用此辅助函数生成的假数据:
generate.data <- function(rate=.3, dim=c(25,25)) {
tmp <- rep(".", prod(dim))
tmp[sample(1:prod(dim), ceiling(prod(dim)*rate))] <- "S"
m <- matrix(tmp, nr=dim[1], nc=dim[2])
return(m)
}
基于文字的输出
x <- generate.data()
rownames(x) <- colnames(x) <- 1:25
capture.output(as.table(x), file="res.txt")
文件res.txt
包含一个漂亮的控制台输出版本;您可以使用任何txt到pdf转换器将其转换为pdf(我使用PDFlib中的那个)。以下是文本文件的屏幕截图:
基于图像的输出
首先,这是我使用的绘图功能:
make.table <- function(x, labels=NULL) {
# x = matrix
# labels = list of labels for x and y
coord.xy <- expand.grid(x=1:nrow(x), y=1:ncol(x))
opar <- par(mar=rep(1,4), las=1)
plot.new()
plot.window(xlim=c(0, ncol(x)), ylim=c(0, nrow(x)))
text(coord.xy$x, coord.xy$y, c(x), adj=c(0,1))
if (!is.null(labels)) {
mtext(labels[[1]], side=3, line=-1, at=seq(1, ncol(x)), cex=.8)
mtext(labels[[2]], side=2, line=-1, at=seq(1, nrow(x)), cex=.8, padj=1)
}
par(opar)
}
然后我称之为
make.table(x, list(1:25, 1:25))
这是结果(保存为png,pdf,jpg或其他)。
答案 2 :(得分:2)
据我所知,这是一个文本表。我想知道你为什么想把它变成图形?无论如何,快速解决方案(无论哪种方式)
制作文本表(通过编程或输入)并制作其截图并将图像嵌入图中。
制作一个空白的图,并通过使用“文本”功能编程R将文本放在图上。有关“文字”的更多信息,请参阅http://cran.r-project.org/doc/contrib/Lemon-kickstart/kr_adtxt.html