2

次のコードで2つのプロットが上下に生成されないのはなぜだろうと思います。

data(mtcars)
library(randomForest)

mtcars.rf <- randomForest(mpg ~ ., data=mtcars, ntree=1000, keep.forest=FALSE,
                          importance=TRUE)
png("rf1.png", width=6, height=6, units="in", res=100)
par(mfcol=c(2,1))
varImpPlot(mtcars.rf)
plot(mtcars.rf, log="y")
dev.off()

これはただ生成します

ここに画像の説明を入力してください

2行目は空白です。

4

1 に答える 1

3

問題は、varImpPlot がプロット領域を再定義してから、以前の値にリセットすることです。これは、行のpar(mfcol=c(2,1)) varImpPlotに呼び出したかのように機能することを意味します。varImpPlot プロット データを抽出すると、2 つのドットチャートを自分でプロットできます (プロット領域を異なる形状の領域に分割するのlayoutではなく、使用できます)。par

data(mtcars)
library(randomForest)

mtcars.rf <- randomForest(mpg ~ ., data=mtcars, ntree=1000, keep.forest=FALSE,
                          importance=TRUE)
varImpData <- varImpPlot(mtcars.rf) # calculate this outside the plot

png("rf1.png", width=6, height=6, units="in", res=100)
layout(matrix(c(1,2,3,3), 2, 2, byrow = TRUE))
dotchart(varImpData[,c(1)])
dotchart(varImpData[,c(2)])
plot(mtcars.rf, log="y")
dev.off()
于 2012-11-01T11:28:15.197 に答える