我想使用双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"))
答案 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)
产生以下结果:
请问这是否不是您想要的。