2011-11-12 54 views
2

關於繪圖設置,我有一個非常簡單的問題。在圖中設置y軸

我想以特殊的方式在y軸上有刻度線(和這些刻度線上的標籤)。例如從3到9,增加一個單位。

這是代碼:

windows()   
par(yaxp = c(3, 9, 7)) 
plot(1:10) 

但它不工作。我真的不明白爲什麼? 我也嘗試玩par()的參數,如tck,tcl,yaxs,yaxt,yaxp和函數軸()。其中包括以下代碼導致,例如:

windows() 
par(yaxt = "n", yaxp = c(3, 9, 7)) 
plot(1:10) 

windows() 
par(yaxt = "n") 
plot(1:10) 
axis(2, at = c(3, 4, 5)) 

不幸的是,我在任何情況下失敗... 任何想法?

回答

5

這對我有用嗎?

plot(1:10, yaxp = c(3, 9, 6)) 

enter image description here

6

我通常通過在調用plot()中設置axes = FALSE來解決此問題,然後使用axis()繪製各個軸。

# no call to par() needed 
plot(c(1:10), axes = FALSE) 
axis(1)      # x-Axis 
ticks <- seq(3, 9, 1)  # sequence for ticks and labels 
axis(2, at = ticks,   # y-Axis 
    labels = ticks) 
box()      # and a box around the plot 
7

您收到了你的眼前問題的一些好的解決辦法,但我想我會回答「爲什麼?」一部分。在這種情況下,R的文檔是正確的,但可能不是那麼透明。

如果檢查的?par描述xaxp的部分,你會發現:

此參數復位,當用戶座標系的建立,爲 例如通過啓動一個新的頁面,或撥打情節.window或設置 par(「usr」):n取自par(「lab」)。

yaxp下,沒有給出相同的警告,而是說簡單的'請參閱xaxp'。有在?parusr參數沒有類似的警告,但同樣是可能的情況下,因爲如果我們仰望?plot.window我們看到:

呼叫的一個副作用是成立的USR,xaxp和yaxp

那麼是什麼情況是,到plot呼叫最終導致調用plot.window,側面效果是實際重置usrxaxpyaxp設置。當然,除非你直接將這些參數傳遞給更高級別的函數,如plot,然後將它們交給plot.window

就個人而言,我認爲這值得一提的的?par與參數列表可以可以通過使用par(),而不是將它們傳遞給高層繪圖函數設置沿細節部分。

+0

嗨喬蘭,這是一個真正interssting信息!但是,如果我正確理解你發現的內容,那麼NERVER在par中使用usr,xaxp和yaxp中的一個參數是有意義的,因爲它們將從polt函數中重置。或者你能想到一個案例,它確實有意義嗎? –