两个具有相同X和Y轴的图表

8

以下R代码产生了所示的图表。

png("test.png")
plot(data[,4],data[,3],type='l',col="green")
par(new=TRUE)
plot(data[,4],data[,2],type='l',col="red")
dev.off()

两个图表的Y轴范围不同,并且如图所示被覆盖。请问有人能帮忙将这两个图表的Y轴范围设置为相同吗?

enter image description here


6
尝试使用 lines() 添加第二行。 - ndoogan
为什么在第二个里不要使用 axes=FALSE - agstudy
2个回答

7
如果 y 轴大部分重叠,那么你可以先绘制一个包含完整范围但不显示任何内容的初始图来定义坐标轴,然后再绘制线条。
set.seed(5)
data <- data.frame(1:60, rnorm(60, 0.6, 0.1), rnorm(60, 0.65, 0.15), 
                   seq(2,120,by=2))

使用type='n'设置坐标轴,但不会绘制任何内容。使用所有数据的范围可以确保绘图包含所有数据。

plot(range(data[,4]), range(c(data[,3],data[,2])), type='n')
lines(data[,4], data[,3], type='l', col='green')
lines(data[,4], data[,2], type='l', col='red')

enter image description here


6
您可以使用以下方法:
  1. 绘制第一个图
  2. 调用 par(new=TRUE)
  3. 在第一个图的基础上绘制第二个图。第二个图不会绘制默认轴(axes=FALSE

如果第二个图与第一个图的y轴不同,您可以使用axis()函数绘制一个辅助y轴,在右侧表示刻度。

例如,您可以做如下操作:
 data <- matrix(rnorm(4*100),ncol=4)
 par(mar=c(5, 6, 2, 4))
 plot(1:100,data[,3], lwd=3, col="green", ann=FALSE, las=2,type='l')
 mtext("I am at left", side=2, line=3.5)
 par(new=TRUE)
 plot(1:100,data[,2], ann=FALSE, axes=FALSE,col='red',type='l')
 mtext("I am at right)", side=4, line=2)
 title("Using par(new=TRUE) \n same X and different or not Y axis ")
 axis(4)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接