2012-08-02 113 views
46

我建立R中的曲線圖和我不喜歡由R.如何指定實際x軸的值來繪製爲x軸蜱中的R

例如被描繪x軸值:

x <- seq(10,200,10) 
y <- runif(x) 

plot(x,y) 

這在X軸上標繪具有以下值的曲線圖:

50, 100, 150, 200

然而,我要繪製的20個值10,20, 30 ... 200存儲在variab le x,作爲X軸值。我已經經歷了無數的博客和簡潔的手動沖刷 - 搜索了幾個小時之後,最接近我是來尋找有用的東西是以下(總結)說明:

  1. 呼叫plot()par(),指定參數xaxt='n'
  2. 致電axis()例如axis(side = 1, at = seq(0, 10, by = 0.1), labels = FALSE, tcl = -0.2)

我試過了,結果圖中根本沒有x軸值。有人可能知道如何做到這一點嗎?我無法相信以前從未有人試圖這樣做過。

回答

66

您可以在?axis的幫助頁面找到問題的答案。

這裏是幫助頁面的例子之一,與您的數據修改:

選項1:使用xaxp定義軸標籤

plot(x,y, xaxt="n") 
axis(1, xaxp=c(10, 200, 19), las=2) 

選項2:使用atseq()定義標籤:

plot(x,y, xaxt="n") 
axis(1, at = seq(10, 200, by = 10), las=2) 

這兩個選項產生相同的圖形:

enter image description here


PS。由於您有大量標籤,因此您必須使用其他參數才能使文本適合情節。我使用las旋轉標籤。

5

仔細查看?axis文檔。如果你看一下labels參數的描述,你會看到,它是:

"a logical value specifying whether (numerical) annotations are 
to be made at the tickmarks," 

所以,僅僅將其更改爲正確的,你會得到你的刻度標記。

x <- seq(10,200,10) 
y <- runif(x) 
plot(x,y,xaxt='n') 
axis(side = 1, at = x,labels = T) 
# Since TRUE is the default for labels, you can just use axis(side=1,at=x) 

要小心,如果你不舒展你的窗口的寬度,那麼R可能無法寫在您的所有標籤,與窗口寬度播放,你會明白我的意思。


這太糟糕了,你有這樣的麻煩尋找文件!你的搜索條件是什麼?嘗試在Google中輸入r axis,您將獲得的第一個鏈接是Quick R page that I mentioned earlier。向下滾動到「Axes」,你會得到一個非常好的指導如何做到這一點。你應該首先在那裏檢查任何陰謀問題,這將比等待SO回覆更快。

+2

小心。 'T'並不總是爲'TRUE'。最好指定'labels = TRUE'。此外,谷歌搜索結果將取決於您的搜索歷史記錄。有關如何搜索[tag:r]的提示,請參閱[如何搜索材料](http://stackoverflow.com/questions/102056/how-to-search-for-r-材料) – Andrie 2012-08-02 11:10:00

0

希望這個編碼將幫助你:)

plot(x,y,xaxt = 'n') 

axis(side=1,at=c(1,20,30,50),labels=c("1975","1980","1985","1990"))