我想在一个带有标题且只有一个x标签的图表中制作三个图,但是当我修改边距以包含这些标签时,图表最终会有不同的尺寸。
这就是我的尝试:
par(mfrow=c(3,1), mar=c(1.5,5,3,2) + 0.1)
plot(1:10, xaxt='n', main = "Some title")
par(mar=c(1.5,5,0,2) + 0.1)
plot(1:10, xaxt='n')
par(mar=c(5,5,0,2) + 0.1)
plot(1:10, xlab = "Some x label")
这些情节看起来像这样:
如您所见,第二张图的大小不同。我想要的是所有最终都具有相同的大小。
任何帮助都会非常感激!
答案 0 :(得分:1)
这对基本图形来说并不容易。问题在于,mfrow
将拆分设备拆分为三行,第一个图的标题和每个行中最后一个占用空间的x轴标签。使用Lattice或ggplot会更容易。要使用这些功能,您通常希望在开始之前将所有数据放在单个data.frame中。例如,使用此测试数据集
dd<-data.frame(x=rep(1:10,3),y=rep(1:10,3), group=rep(1:3, each=10))
你可以使用ggplot2
library(ggplot2)
ggplot(dd, aes(x,y)) +
geom_point() +
facet_grid(group~.) +
ggtitle("Some title") + xlab("Some X label")
或莱迪思
library(lattice)
xyplot(y~x|factor(group), dd, layout=c(1,3),
main="Some Title", xlab="Some X label")
答案 1 :(得分:1)
您可以使用布局功能。要绘制上述内容,请为5个图形进行布局:顶部窄的一个用作标题的空间,后面是3个散点图,第五个窄图用于底部的x标签。
边距例如:
par(mar=c(0.5,6,0.5,2)+0.1)
制作指定绘图布局的矩阵: mat&lt; -matrix(c(1:5),5,1,byrow = T)
布局功能包括宽度和高度。在这里,我们只有一列图,所以只有一个宽度,然后是每行图的高度:
layout(mat, widths=1, heights= c(0.5, 3, 3, 3, 1.5))
第一幅情节将是空白情节
plot(0, xaxt='n', yaxt='n', bty='n', pch='', ylab='', xlab='')
绘制散点图并添加标题和轴标签的文本。注意&#34; padj&#34;在文本函数中可能需要根据Quartz窗口的大小进行修改。最后的情节也是空的
plot(1:10, xaxt='n')
mtext("Some title", 1, padj=-15)
plot(1:10, xaxt='n')
mtext("Some ylabel", 2, padj=-5)
plot(1:10)
mtext("Some x label", padj=20)
plot(0, xaxt='n', yaxt='n', bty='n', pch='', ylab='', xlab='')
答案 2 :(得分:0)
我认为@Backlin对另一个问题的异议答案可能是您在寻找什么: R, plot , font size changes in multiple plot figures
该想法是减少每个图的边距,而在边距中写上标签和标题。您的代码可能看起来像这样:
par(mfrow=c(3,1), oma=c(4.5, 4, 4, 2.5), mar=rep(.1, 4), cex=1, las=1)
plot(x=rnorm(10), y=rnorm(10), ann=FALSE, xaxt="n")
plot(x=rnorm(10), y=rnorm(10), ann=FALSE, xaxt="n")
plot(x=rnorm(10), y=rnorm(10), ann=FALSE)
title("My plot", outer=TRUE)
mtext("X-axis label", 1, 3, outer=TRUE)
mtext("Y-axis label", 2, 3, outer=TRUE, las=0)