R 共享x轴

R 共享x轴,r,data-visualization,R,Data Visualization,考虑以下R代码的输出: par( mar=c(5,4,4,5)+.1 ) boxplot( t( matrix( rnorm( 100 ), nrow=10 )), xlab="Var1", ylab="Var2") par( new=T ) plot( 1:10, runif(10,min=-2, max=3), xaxt='n', yaxt='n', xlab='', ylab='', type='b', col='blue', pch=15 ) axis(4) mtext("Var3",

考虑以下R代码的输出:

par( mar=c(5,4,4,5)+.1 )
boxplot( t( matrix( rnorm( 100 ), nrow=10 )), xlab="Var1", ylab="Var2")
par( new=T )
plot( 1:10, runif(10,min=-2, max=3), xaxt='n', yaxt='n', xlab='', ylab='', type='b', col='blue', pch=15 )
axis(4)
mtext("Var3", side=4, line=3 )
蓝色点未与x轴对齐。我想让两个图正确地共享x轴。我曾尝试将
at
参数用于
boxplot
,但这给了我奇怪的输出

提前谢谢

主键
^_^为什么不直接使用
行呢

par( mar=c(5,4,4,5)+.1 )
boxplot( t( matrix( rnorm( 100 ), nrow=10 )), xlab="Var1", ylab="Var2")
lines( 1:10, runif(10,min=-2, max=3), type='b', col='blue', pch=15 )
axis(4)
mtext("Var3", side=4, line=3 )

为什么不直接使用
行呢

par( mar=c(5,4,4,5)+.1 )
boxplot( t( matrix( rnorm( 100 ), nrow=10 )), xlab="Var1", ylab="Var2")
lines( 1:10, runif(10,min=-2, max=3), type='b', col='blue', pch=15 )
axis(4)
mtext("Var3", side=4, line=3 )

是的,这就是答案。进行多次情节调用是我们都犯的新手错误。使用基本“绘图”函数(以及大多数其他绘图函数),只需调用绘图一次,然后向该绘图空间添加其他形式的符号。我想指出的是,对于'lines'函数,您不需要所有这些附加参数。你可以把它写成
行(1:10,runif(10,min=-2,max=3),type='b',col='blue',pch=15)
,因为它是一个几何调用,而不是一个绘图调用。@Dinre当然,你是对的,我太懒了,只是用
替换了
绘图
。编辑,谢谢你指出这一点。@polarise如果它解决了你的问题,你可以检查绿色标记。这将通知其他用户并显示已回答的问题。嗯。。。不适用于par(mar=c(5,4,4,5)+.1)箱线图(t(矩阵(rnorm(100),nrow=10)),xlab=“Var1”,ylab=“Var2”)线(1:10,runif(10,min=-10,max=30),type='b',col='blue',pch=15,yaxt='n')轴(4)多行文字(“Var3”,side=4,line=3)我希望在每个y轴上有两个单独的刻度。@polarise命名最小值(x)和最大值(x)作为它们的对象,然后将“xlim=c(最小(x)-0.5,最大(x)+0.5)”添加到测线图语句中。我不知道这是否被视为玩弄,但这是我能做到的最自动的。是的,这就是答案。进行多次情节调用是我们都犯的新手错误。使用基本“绘图”函数(以及大多数其他绘图函数),只需调用绘图一次,然后向该绘图空间添加其他形式的符号。我想指出的是,对于'lines'函数,您不需要所有这些附加参数。你可以把它写成
行(1:10,runif(10,min=-2,max=3),type='b',col='blue',pch=15)
,因为它是一个几何调用,而不是一个绘图调用。@Dinre当然,你是对的,我太懒了,只是用
替换了
绘图
。编辑,谢谢你指出这一点。@polarise如果它解决了你的问题,你可以检查绿色标记。这将通知其他用户并显示已回答的问题。嗯。。。不适用于par(mar=c(5,4,4,5)+.1)箱线图(t(矩阵(rnorm(100),nrow=10)),xlab=“Var1”,ylab=“Var2”)线(1:10,runif(10,min=-10,max=30),type='b',col='blue',pch=15,yaxt='n')轴(4)多行文字(“Var3”,side=4,line=3)我希望在每个y轴上有两个单独的刻度。@polarise命名最小值(x)和最大值(x)作为它们的对象,然后将“xlim=c(最小(x)-0.5,最大(x)+0.5)”添加到测线图语句中。我不知道这是否被视为玩弄,但这是我能做到的最自然的。