具有不同x点的双Y轴基R绘图

时间:2019-06-04 20:24:45

标签: r plot

我想使用双y轴绘制4组数据点的图。前两个在左y轴上,后两个在右y轴上。前两个属于一组数字,范围从5000到50,000。后两组数据的范围是1-100。我想对它进行绘制,以便可以很容易地看出两个轴不仅在不同的比例上,而且在不同范围的两个不同集合中的点之间的高度显然很大。我不想画一条水平线,暗示从左y轴来的一些数字可以双射地映射到右y轴上的一些数字。我要使从左y轴和右y轴开始的任何点的水平线仅属于与左轴或右轴相关的一组。

How can I plot with 2 different y-axes?。有

我会用twoord.plot 从plotrix v3.7-5 吉姆·莱蒙(Jim Lemon)撰写,但它的缺点是不如R碱基,因为我不能在一个图中添加4组数据。我只能将2组(x,y)对与2-ord图一起使用。从理论上讲,我可以使用底数R绘制n组(x,y)对。

没有

这是行不通的:

  time <- seq(0,72,12)
    betagal.abs <- c(0.05,0.18,0.25,0.31,0.32,0.34,0.35)
    cell.density <- c(0,1000,2000,3000,4000,5000,6000)

## add extra space to right margin of plot within frame
par(mar=c(5, 4, 4, 6) + 0.1)

## Plot first set of data and draw its axis
plot(time, betagal.abs, pch=16, axes=FALSE, ylim=c(0,1), xlab="", ylab="", 
   type="b",col="black", main="Mike's test data")
axis(2, ylim=c(0,1),col="black",las=1)  ## las=1 makes horizontal labels
mtext("Beta Gal Absorbance",side=2,line=2.5)
box()

## Allow a second plot on the same graph
par(new=TRUE)

## Plot the second plot and put axis scale on right
plot(time, cell.density, pch=15,  xlab="", ylab="", ylim=c(0,7000), 
    axes=FALSE, type="b", col="red")
## a little farther out (line=4) to make room for labels
mtext("Cell Density",side=4,col="red",line=4) 
axis(4, ylim=c(0,7000), col="red",col.axis="red",las=1)

## Draw the time axis
axis(1,pretty(range(time),10))
mtext("Time (Hours)",side=1,col="black",line=2.5)  

## Add Legend
legend("topleft",legend=c("Beta Gal","Cell Density"),
  text.col=c("black","red"),pch=c(16,15),col=c("black","red"))

1 个答案:

答案 0 :(得分:0)

不太清楚要做什么,但是可以使用lines添加一个额外的“每图线”。

我已经编辑了您的代码

    ## Plot first set of data and draw its axis
plot(time, betagal.abs, pch=16, axes=FALSE, ylim=c(0,1), xlab="", ylab="", 
     type="b",col="black", main="Mike's test data")
lines(seq(0, 1, 0.02), type = 'o')
axis(2, ylim=c(0,1),col="black",las=1)  ## las=1 makes horizontal labels
mtext("Beta Gal Absorbance",side=2,line=2.5)
box()

## Allow a second plot on the same graph
par(new=TRUE)

## Plot the second plot and put axis scale on right
plot(time, cell.density, pch=15,  xlab="", ylab="", ylim=c(0,7000), 
     axes=FALSE, type="b", col="red")
lines(seq(0, 5000, 10), type = 'o', col = 'red')
## a little farther out (line=4) to make room for labels
mtext("Cell Density",side=4,col="red",line=4) 
axis(4, ylim=c(0,7000), col="red",col.axis="red",las=1)

产生以下结果:

plot

请问这是否不是您想要的。