2013-02-27 37 views
2

我一直在使用plot已經有很長一段時間了,我想知道如果類型參數可以覆蓋分類預測變量,會損壞多少。現在,當x變量是一個因素時,plot總是嘗試boxlot。看起來,plot.factor方法總是被調用。如果類型可以覆蓋該功能,並且我不必將x軸數值化,就可以將其抑制,然後再添加它。我對包裝函數不感興趣,因爲我剛剛描述瞭如何做到這一點。我只是想知道是否有一個plot我錯過了,可以解決這個問題。重寫plot.factor的技巧?

例如,典型的箱線圖試圖在這種情況下...

y <- 1:4 
x <- factor(letters[1:4]) 
plot(y ~ x) 

我寧願它只是繪製點和正確標註X軸。以下工作,但我希望有一個更簡單的版本。

nx <- length(x) 
plot(y ~ 1:nx, xaxt = 'n') 
axis(1, 1:nx, x, xlab = '') 

我希望像下面可能工作...

plot(y ~ x, type = 'n') 
points(1:nx, y) 

,但沒有去。並且type = 'p'也不這樣做。

我相信這一次的故障又是不一致R.設置type = 'n'應在法工作的另一個例子通話以及也應該是強制性的,所有plot功能使用它(繼承或通過...至少傳遞)。它在plot.default

+0

僅供參考:您標記錯誤的'type'參數的行爲實際上是記錄的行爲。當在'plot.factor'中描述更多參數時,文檔清楚地說明「無接受類型」。你所描述的更像是一個功能請求,R核心將一個類型參數添加到'boxplot'(這是最終調用的)。他們可能會(正確地)爭辯說,拯救人們額外的1-2行調用'axis'是不值得的。 – joran 2013-02-27 19:39:15

+0

我認爲對於一致性來說,有一點可以說比簡潔更爲重要。好的,是的,也許我應該把它作爲一個功能請求。 – John 2013-02-27 21:29:59

+0

嘿,我真的在你身邊。我認爲追蹤哪些參數與哪些方法一起用於像「plot」這樣的通用方法可能比理想情況下希望的更復雜。我只是指出了這個(有點平庸的)事實,即這種複雜性意味着改變可能比效益好得多。 – joran 2013-02-27 21:35:46

回答

4

你可以只調用plot.default:

y<-rnorm(100) 
x<-factor(sample(c("a","b","c"),size=100,replace=TRUE)) 
plot.default(x,y) 

編輯:改變因子水平字符所以很顯然,這個工程即使在那時。

+0

+1智能答案! – agstudy 2013-02-27 17:14:24

+0

+1這很好,但你仍然必須抑制X軸,然後再放回去。它並沒有保存任何步驟,但它更好地表達了代碼的意圖,而不是我在做這件事的方式。 – John 2013-02-27 17:55:31

+0

好吧,現在你更新了你的問題,我明白你在找什麼。是的,這在x軸上沒有幫助。由於x是使用通用繪圖函數的因子,因此將始終使用plot.factor方法,並使用數字y來生成箱線圖。如果有更明智的做法比抑制和重做x軸,我想它仍然需要plot.default。 – 2013-02-27 18:15:56