19

データフレーム内の無関係な列ごとに個別の箱ひげ図をプロットしたいと思います。boxplot.matrixパッケージからは正しい方向に進んでいると思いましたが、軸に共有スケールを使用して共有ボックスプロットにすべてをプロットするsfsmsicのと同じように見えます。boxplot(as.matrix(plotdata)私は(たとえば)5つの個別のプロットが必要です。

私はこれを次のように手作業で行うことができます:

par(mfrow=c(2,2))
boxplot(data$var1
boxplot(data$var2)
boxplot(data$var3)
boxplot(data$var4)

しかし、データフレーム列を使用する方法が必要ですか?

編集:私は反復を使用しました、私の答えを参照してください。

4

3 に答える 3

24

あなたはreshape物事を単純化するためにパッケージを使うことができます

data <- data.frame(v1=rnorm(100),v2=rnorm(100),v3=rnorm(100), v4=rnorm(100))
library(reshape)
meltData <- melt(data)
boxplot(data=meltData, value~variable)

またはそれでもggplot2パッケージを使用して物事をより良くする

library(ggplot2)
p <- ggplot(meltData, aes(factor(variable), value)) 
p + geom_boxplot() + facet_wrap(~variable, scale="free")
于 2012-07-05T14:58:02.107 に答える
14

?boxplotリストの要素としてデータの複数のベクトルを渡すオプションがあることがわかります。リスト内のベクトルごとに1つずつ、複数の箱ひげ図を取得します。

したがって、必要なのは、行列の列をリストに変換することだけです。

m <- matrix(1:25,5,5)
boxplot(x = as.list(as.data.frame(m)))

それぞれが単一の箱ひげ図を持つ別々のパネルが本当に必要な場合(率直に言って、なぜそうするのかわかりませんが)、代わりにggplotとファセットに目を向けます。

m1 <- melt(as.data.frame(m))
library(ggplot2)
ggplot(m1,aes(x = variable,y = value)) + facet_wrap(~variable) + geom_boxplot()
于 2012-07-05T14:56:11.727 に答える
5

これを行うために反復を使用しました。たぶん、元の質問でははっきりしていなかったと思います。それでも回答をありがとう。

par(mfrow=c(2,5))
for (i in 1:length(plotdata)) {
        boxplot(plotdata[,i], main=names(plotdata[i]), type="l")

}
于 2012-07-06T08:58:04.000 に答える