考虑我有这样的情节:
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)
有没有办法让两个地块的原点相互对齐?
我尝试将xlim
和ylim
值设置为输入变量的最大值,以使绘图居中,但这只会创建大量带有倾斜绘图的可用空间。
如果第二个图不完美,但不应该被切断,这没关系。它应该相应地扩展。 此外,因为它是更大代码的一部分,我更喜欢r基础图形的答案。
编辑: 另一种可能性是创建一个因子p
p<-min(range(Y1)/range(Y2))
然后在不调用points(Y2*p~X,col=4)
的情况下绘制par(new=TRUE)
但是我必须创建一个按因子p
缩放的轴。而且我也无法做到这一点......
答案 0 :(得分:0)
您可以为两个地块设置与ylim
相同的min
和max
个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)