R 制作带有行标题和列标题的打印矩阵

R 制作带有行标题和列标题的打印矩阵,r,plot,R,Plot,使用par(mfrow=c(m,n))命令,我可以轻松地用m行和n列创建一个图矩阵 在特殊情况下,图中有一种模式,即每列中的所有图共享一个重要属性,每行中的所有图共享一个不同的重要属性。所有这些信息都可以单独包含在每个m*n图的标题中,但这显然是重复的 是否有一种方便的方法可以在这样的网格中附加列名(仅在绘图的顶行上方)和行名(仅在绘图的左列左侧) 迄今为止的最佳解决方案:使用text()命令将文本放置在左侧和顶部绘图之外。但这并不令人满意,因为它需要许多单独的命令,并调整参数,如srt=90,

使用
par(mfrow=c(m,n))
命令,我可以轻松地用
m
行和
n
列创建一个图矩阵

在特殊情况下,图中有一种模式,即每列中的所有图共享一个重要属性,每行中的所有图共享一个不同的重要属性。所有这些信息都可以单独包含在每个
m*n
图的标题中,但这显然是重复的

是否有一种方便的方法可以在这样的网格中附加列名(仅在绘图的顶行上方)和行名(仅在绘图的左列左侧)


迄今为止的最佳解决方案:使用
text()
命令将文本放置在左侧和顶部绘图之外。但这并不令人满意,因为它需要许多单独的命令,并调整参数,如
srt=90
,使文本在左边距垂直,并使用
xpd=NA
par()

中,lattice和ggplot2包具有在网格中创建多个绘图的工具。如果他们适用于你想做的事情,他们可能会加快你的整个过程

library(lattice)

splom( ~ iris[,1:4], data=iris, groups=Species )
xyplot( mpg ~ wt | factor(cyl)*factor(am), data=mtcars )

library(ggplot2)

p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p + facet_grid(am ~ cyl)

你的第三个答案对我来说最有吸引力,因为它看起来很灵活。看起来关键元素是
par()
中的
oma
参数、
mtext
函数及其
outer
参数和
grconvertX/Y
。我仍然希望
R
开发人员能找到一个更精简的界面,某种
metapar()
@zkurtz,你可以自己编写一个函数来做你想做的事情。如果它对其他人足够有用,那么就把它放在一个包中,如果它足够有用,那么它最终可能会出现在常规的R中。我不清楚该函数如何工作,它会给您带来灵活性,并且比手工操作更简单(前两个选项提供了简单性,其他工具也提供了简单性,但您似乎想要灵活性)。
par( oma=c(0,6,6,0), mfrow=c(2,2), mar=c(2,2,1,1)+0.1 )
with(iris, plot(Sepal.Width, Petal.Width, ann=FALSE))
mtext( 'Width', side=3, line=2, at=grconvertX(0.5,'npc','nic'), outer=TRUE )
mtext( 'Width', side=2, line=2, at=grconvertY(0.5,'npc','nic'), outer=TRUE )
mtext( 'Sepal', side=3, line=4, outer=TRUE, cex=2 )
mtext( 'Petal', side=2, line=4, outer=TRUE, cex=2 )
with(iris, plot(Sepal.Length, Petal.Width, ann=FALSE))
mtext( 'Length', side=3, line=2, at=grconvertX(0.5,'npc','nic'), outer=TRUE )
with(iris, plot(Sepal.Width, Petal.Length, ann=FALSE))
mtext( 'Length', side=2, line=2, at=grconvertY(0.5, 'npc','nic'), outer=TRUE )
with(iris, plot(Sepal.Length, Petal.Length, ann=FALSE))