use*_*268 1 formatting plot r rows
我有以下问题:我想在R中制作一个图,其中两个图形在彼此之上.但是,上图应该占据大部分空间,下图应该只有一个非常低的高度(它只是用于表示"主"图中的特殊位置).目前我有这个代码,但我不知道如何设置每一行应该占用的空间(第二个绘图应该紧接在第一个之下):
dev.new()
png("multitest.png")
par( mfrow = c( 2, 1 ) )
plot( rnorm( n = 10 ), col = "blue", main = "plot 1", cex.lab = 1.1,ylab="yname", xlab='')
plot( rnorm( n = 10 ), col = "red", main = "", cex.lab = 1.1, xaxt='n',yaxt='n',xlab="xname", ylab="")
dev.off()
Run Code Online (Sandbox Code Playgroud)
我必须在服务器上运行它,我不知道是否有其他软件包可用于R.如果有建议使用其他软件包,我会尽力尝试.提前谢谢你,到目前为止我在R中使用了简单的直方图.
如@Roland所示,layout()为此目的要比使用更好par(mfrow...).以下是一些基本示例,向您展示如何开始使用layout.这些例子都不适合你:我只是举例,你可以弄清楚如何试验它.这里有用的功能也是layout.show().
两块地块,一块在另一块之上.第一个图比另一个宽.
首先,想一想你希望你的数字出现的矩阵.按顺序编号.1=图1,2=图2,0=此空间中没有绘制任何内容.
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 0 2 2 0
Run Code Online (Sandbox Code Playgroud)
使用此矩阵layout():
layout(matrix(c(1, 1, 1, 1, 0, 2, 2, 0), 2, 4, byrow=TRUE))
plot(rnorm(n = 10), col = "blue", main = "plot 1",
cex.lab = 1.1, ylab="yname", xlab='')
plot(rnorm(n = 10), col = "red", main = "", cex.lab = 1.1,
xaxt='n', yaxt='n', xlab="xname", ylab="")
Run Code Online (Sandbox Code Playgroud)

请注意,每个图的高度仍然相同.您可以使用heights参数来控制:
layout(matrix(c(1, 1, 1, 1, 0, 2, 2, 0), 2, 4, byrow=TRUE),
heights = c(7, 3))
plot(rnorm(n = 10), col = "blue", main = "plot 1",
cex.lab = 1.1, ylab="yname", xlab='')
plot(rnorm(n = 10), col = "red", main = "", cex.lab = 1.1,
xaxt='n', yaxt='n', xlab="xname", ylab="")
Run Code Online (Sandbox Code Playgroud)

这是一个有三个图的例子.
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow=TRUE))
plot(rnorm(n = 10), col = "blue", main = "plot 1",
cex.lab = 1.1, ylab="yname", xlab='')
plot(rnorm(n = 10), col = "red", main = "", cex.lab = 1.1,
xaxt='n', yaxt='n', xlab="xname", ylab="")
plot(rnorm(n = 10), col = "green", main = "", cex.lab = 1.1,
xaxt='n', yaxt='n', xlab="zname", ylab="")
Run Code Online (Sandbox Code Playgroud)
