データフレームの無関係な列ごとに個別のボックスプロットをプロットしたいと思います。 sfsmsic
パッケージの_boxplot.matrix
_を使用して正しい方向に進んでいると思いましたが、boxplot(as.matrix(plotdata)
と同じように動作し、共有ボックスプロットのすべてを軸上の共有スケール。 (たとえば)5つの個別のプロットが必要です。
私はこれを手で行うことができます:
_par(mfrow=c(2,2))
boxplot(data$var1
boxplot(data$var2)
boxplot(data$var3)
boxplot(data$var4)
_
しかし、データフレーム列を使用する方法が必要ですか?
編集:私は反復を使用しました、私の答えを見てください。
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")
?boxplot
から、データの複数のベクトルをリストの要素として渡すオプションがあり、リスト内の各ベクトルに1つずつ、複数のボックスプロットを取得することがわかります。
したがって、必要なのは、マトリックスの列をリストに変換することだけです。
m <- matrix(1:25,5,5)
boxplot(x = as.list(as.data.frame(m)))
本当に1つの箱ひげ図のある個別のパネルが必要な場合(率直に言って、なぜそうしたいのかわかりません)、代わりにggplotとファセットに切り替えます。
m1 <- melt(as.data.frame(m))
library(ggplot2)
ggplot(m1,aes(x = variable,y = value)) + facet_wrap(~variable) + geom_boxplot()
これを行うために反復を使用しました。たぶん、元の質問でははっきりしていなかったと思います。それでもなお、回答に感謝します。
par(mfrow=c(2,5))
for (i in 1:length(plotdata)) {
boxplot(plotdata[,i], main=names(plotdata[i]), type="l")
}