0

3 个地块排列成 2 行 2 列

 attach(mtcars)
 par(mfrow=c(2,2))
 plot(wt,mpg, main="Scatterplot of wt vs. mpg")
 plot(wt,disp, main="Scatterplot of wt vs disp")
 boxplot(wt, main="Boxplot of wt")

但是如何创建一个仅包含文本的面板,然后将其添加到网格中的第四个位置。道歉。我现在看到,像许多提问者一样,我要求您从我的代码中读取我的想法或直觉,我希望文本在空白区域的位置网格中左对齐排列。

(出于某种原因,这似乎是完全合理的要求,但它被删除了,尽管没有提供接近投票或提名的重复。我将把我拼凑在一起的东西作为答案,但可能有更优雅的解决方案。我确实看过在类似问题的提名标题中,但没有找到与此问题匹配的任何内容。)

plot(1:100, 1:100, axes=FALSE, ylab="", xlab="", type="n")
text( rep(c(1,50), each=10), rep( seq(1, 100, by=10),2), labels=letters[1:20])

事后我想知道细粒度的网格是否是正确的方法。也许只有正确的行数和列数并使用左对齐文本的粗网格会更像表格。带有 baptiste 的 tableGrob 的 gridExtra 包也可能是一个富有成效的方向。

“情节”的替代文本参数可能是:

txt <- structure(c("am", "carb", "cyl", "disp", "drat", "gear", "hp", 
                   "mpg", "qsec", "vs", "wt", "this"), .Dim = 3:4)


> txt
     [,1]   [,2]   [,3]   [,4]  
[1,] "am"   "disp" "hp"   "vs"  
[2,] "carb" "drat" "mpg"  "wt"  
[3,] "cyl"  "gear" "qsec" "this"
4

3 回答 3

1

这是一个例子,

library(gplots)
textplot(txt)

在此处输入图像描述

中也有addtable2plotplotrix另一种解决方案是将基本图形和网格图形与 gridBase 包混合,并tableGrobgridExtra包中放置一个。

于 2013-10-06T11:12:05.663 回答
1

以为我会在这里投入两分钱。我看到了两种简单的方法来做到这一点(授予既不显示行和列索引,如当前配置)。两者都text按照您的建议使用,但努力在您讨论但未显示的较粗略的网格中布局事物。对于两个关键参数的左对齐都是pos.

选项 1(使用换行符创建网格)

attach(mtcars)
par(mfrow=c(2,2))
plot(wt,mpg, main="Scatterplot of wt vs. mpg")
plot(wt,disp, main="Scatterplot of wt vs disp")
boxplot(wt, main="Boxplot of wt")
txt <- structure(c("am", "carb", "cyl", "disp", "drat", "gear", "hp", 
                   "mpg", "qsec", "vs", "wt", "this"), .Dim = 3:4)

plot.new()
sapply(1:4, function(i) text(i/4, .5, paste(txt[,i],collapse='\n'), pos=4))

在此处输入图像描述

选项 2(使用文本矢量化创建网格)

attach(mtcars)
par(mfrow=c(2,2))
plot(wt,mpg, main="Scatterplot of wt vs. mpg")
plot(wt,disp, main="Scatterplot of wt vs disp")
boxplot(wt, main="Boxplot of wt")
txt <- structure(c("am", "carb", "cyl", "disp", "drat", "gear", "hp", 
                   "mpg", "qsec", "vs", "wt", "this"), .Dim = 3:4)

plot.new()
sapply(1:4, function(i) text(i/4, (1:3)/3, rev(txt[,i]), pos=4))

在此处输入图像描述

于 2013-12-16T19:12:20.933 回答
0

不确定你想要什么文本,但这里有一个“hello world”:

plot.new()
text(0.5,0.5,"hello world",cex=6)

在此处输入图像描述

于 2013-10-02T19:44:07.273 回答