强制添加绘图(使用不同的轴)在R中具有相同的原点

时间:2017-08-03 21:08:39

标签: r plot

考虑我有这样的情节:

par(mar=c(3,5,1,5))
X=rnorm(10)
Y1<-rnorm(10)
Y2<-rnorm(10)*10+2
plot(X,Y1,col=2,ylab="red")
points(0,0,pch=3,,col=2,cex=2)

并添加了一个额外的情节:

par(new=T)
 plot(X,Y2,col=4,axes=FALSE,ylab="")
 points(0,0,pch=4,col=4,cex=2)
 axis(side=4)
 mtext("blue",4,2)

有没有办法让两个地块的原点相互对齐?

我尝试将xlimylim值设置为输入变量的最大值,以使绘图居中,但这只会创建大量带有倾斜绘图的可用空间。

如果第二个图不完美,但不应该被切断,这没关系。它应该相应地扩展。 此外,因为它是更大代码的一部分,我更喜欢r基础图形的答案。

编辑: 另一种可能性是创建一个因子p

p<-min(range(Y1)/range(Y2))

然后在不调用points(Y2*p~X,col=4)的情况下绘制par(new=TRUE) 但是我必须创建一个按因子p缩放的轴。而且我也无法做到这一点......

2 个答案:

答案 0 :(得分:0)

您可以为两个地块设置与ylim相同的minmax个Y变量

plot(X,Y1,col=2,ylab="red", ylim=range(c(Y1,Y2)))
points(0,0,pch=3,,col=2,cex=2)

par(new=T)
plot(X,Y2,col=4,axes=FALSE,ylab="", ylim=range(c(Y1,Y2)))
points(0,0,pch=4,col=4,cex=2)
axis(side=4)
mtext("blue",4,2)

答案 1 :(得分:0)

知道了!

我快到了。 相当狡猾,所以欢迎任何有关如何改善的评论。

编辑:不那么狡猾

par(mar=c(3,5,1,5))
X=rnorm(10)
Y1<-rnorm(10)
Y2<-rnorm(10)*10+2

#then I create the scale factor 

p<-signif(min(range(Y2)/range(Y1))*2,1)/2

#then I add the original and scaled second plot and axis:

plot(X,Y1,col=2,ylab="red",ylim=c(min(c(Y1,Y2/p)),max(c(Y1,Y2/p))))
points(0,0,pch=3,,col=2,cex=2)
points(X,Y2/p,col=4)
points(0,0,pch=4,col=4,cex=2)
axis(4,at=axTicks(4),labels =axTicks(4)*p)
mtext("blue",4,2)