2016-06-11 79 views
1

如何更改由randomForest包中varImpPlot生成的圖的x限制?如何在varImpPlot上設置x限制

如果我嘗試

set.seed(4543) 
data(mtcars) 
mtcars.rf <- randomForest(mpg ~ ., data=mtcars, ntree=1000, keep.forest=FALSE, 
         importance=TRUE) 
varImpPlot(mtcars.rf, scale=FALSE, type=1, xlim=c(0,15)) 

我收到以下錯誤:

Error in dotchart(imp[ord, i], xlab = colnames(imp)[i], ylab = "", main = if (nmeas == : formal argument "xlim" matched by multiple actual arguments".

這是因爲varImpPlot定義了自己的x的限制,我想,但我怎麼能解決這個問題,如果我想自己設置x限制(也許是爲了保證圖形的一致性)?

+0

我已經從使用varimpplot,向使用dotchart,點陣圖{LAT趨於遠離tice}或者geom_dotplot {ggplot2}來對繪圖進行更多樣化的控制。您可以提取值以使用重要性進行繪圖(mtcars.rf)。當然,重要性也可以很好地用條而不是點來表示,儘管這種情況並不常見。如果您比較不同射頻之間的重要性,這很適合分組條形圖。 – dww

+0

話雖如此,我認爲xlim不起作用的原因是因爲默認情況下,varimp圖會爲不同重要性度量創建2個點圖。所以它不知道哪個軸應用限制。嘗試設置type = 1或type = 2,並且限制應該工作 – dww

+0

我曾嘗試設置type = 1,並且我仍然得到相同的錯誤。結束了使用你的第一個建議,它完美的工作,謝謝! –

回答

2

首先我提取使用importance()的值(由於從@dww建議)

impToPlot <- importance(mtcars.rf, scale=FALSE) 

然後我使用dotchart()繪製它們,這使我手動設置x限制(和任何其他情節設有我倒是等)

dotchart(sort(impToPlot[,1]), xlim=c(0,15), xlab="%IncMSE") 

dotchart of variable importance with manual x axis