2013-11-28 267 views
0

我使用plot()將我的數據繪製在普通散點圖上。我已經定義了x軸的範圍在0到1000之間的對數標度。到現在爲止還挺好。但是我有3個不同的數據集,其中一個數據集的間距爲0,1,10,100,1000,而另外兩個數據集則缺少「1」。我想要所有3個地塊都包含「1」。我試過xaxt="n",然後axis(1, at=c(0, 1, 10, 100, 1000))在對數刻度上使用自定義刻度標記的x軸間距

然後,1被繪製成接近於0,所以在0和1之間沒有日誌縮放。我希望這不是太混亂。我如何設法以對數比例繪製0,1,10,100,1000 ALL,即所有這些值之間的間距相同?

我希望有人能幫助!

+0

您是否曾嘗試在'plot'中設置'xlim'? – fotNelton

+0

希望這[post](http://stackoverflow.com/questions/12554336/plotting-log-scale-in-r)會給你一個提示 – TWL

+0

@fNelton:是的,我用xlim來定義範圍,但R似乎在默認情況下做了剔骨的聖靈。 – user3045021

回答

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語句放入刻度和標籤。