x轴的间距与对数刻度上的自定义刻度线

时间:2013-11-28 08:50:14

标签: r plot axis-labels

我使用plot()在普通的散点图中绘制了数据。我已经在对数刻度上将x轴的范围定义为0到1000之间。到现在为止还挺好。但我有3个不同的数据集,其中一个数据集的间距为0,1,10,100,1000,而另外两个数据集则缺少“1”。我想要所有3个图包含“1”。

我尝试使用xaxt="n"然后使用axis(1, at=c(0, 1, 10, 100, 1000))

然后将1绘制为接近0,因此在0和1之间没有对数缩放。我希望这不会太混乱。如何设置以对数刻度绘制0,1,10,100,1000 ALL,即所有这些值之间的间距相同?

我希望有人可以提供帮助!

1 个答案:

答案 0 :(得分:0)

你需要做这样的事情:

#plot 1
# i don't know what your ylim should be but you want them to be 
# minimum across y1, y2, y3 and maximum across y1, y2, y3
plot(x1,y1,axes=F,xlim=c(0,1000),ylim=c(?,?),xlog=TRUE, col="red")
par(new=T)

#plot 2
plot(x2,y2,axes=F,xlim=c(0,1000),ylim=c(?,?),xlog=TRUE, col="blue")
par(new=T)

#plot 3
plot(x3,y3,axes=F,xlim=c(0,1000),ylim=c(?,?),xlog=TRUE, col="yellow")

#now put back in the axes
#y axis first
axis(2)
#x axis
axis(1,at=c(0, 1, 10, 100, 1000),label=c(0, 1, 10, 100, 1000))
box(bty="l")

这样做是使三个图表具有相同的x和y范围;具体来说,所有图形的x范围都是相同的,0到1000.两个轴都应该跨越您的数据。如果他们不这样做,你只需要扩展x或y。将ylim=c(?,?)中的问号替换为覆盖y值范围的某些数值。

绘制数据后,添加axis语句以放入刻度和标签。