4

10 列と 50 行で構成される data.frame があります。apply 関数を使用して、列ごとに密度関数を計算しました。ここで、計算した密度を一度にプロットしたいと思います。

つまり、プロットの代わりに...

plot(den[[1]]) 
plot(den[[2]]
plot(den[[3]]

...すべての密度を一度にプロットしたいと思います。

関数を使用する必要がlapplyあり、おそらくこれを行うには特定の関数を作成する必要があると思います。誰でも私を助けることができますか?

4

3 に答える 3

6

多分これは役に立つでしょう

set.seed(001)
DF <- data.frame(matrix(rnorm(400, 100, 12), ncol=4)) # some data
den<-apply(DF, 2, density) # estimating density


par(mfrow=c(2,2))
sapply(den, plot) # plot each density
par(mfrow=c(1,1))

これは...

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

いくつかの名前を付ける:

par(mfrow=c(2,2))
for(i in 1:length(den)){
  plot(den[[i]], 
       main=paste('density ', i))
}
par(mfrow=c(1,1))

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

1つの出力にすべてのプロットが必要ない場合は、省略してpar(mfrow=c(2,2))実行することをお勧めします。sapply(den, plot)

編集:2番目の質問への回答(コメント内)

plot(den[[1]], ylim=c(0,.04), 
     main='Densities altogether') # plot the first density
for(i in 2:length(den)){          # Add the lines to the existing plot
  lines(den[[i]], col=i)          
}

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

legendここでは、関数を使用して凡例を追加すると便利です

legend('topright', paste('density ', 1:4), col=1:4, lty=1, cex=.65)
于 2012-11-08T10:08:25.697 に答える
1

latticeExtra非常に便利な機能を備え、marginalplot

marginal.plot(DF,layout=c(2,2))

ここに画像の説明を入力

于 2013-03-02T05:37:51.337 に答える
1

latticeそのパッケージは便利だと思います:

ジルバーからの次の例:

set.seed(001)
DF <- data.frame(matrix(rnorm(400, 100, 12), ncol=4)) # some data
DF <- stack(DF) # to long form

library(lattice)
densityplot(~values|ind, DF, as.table=TRUE)
# or
densityplot(~values, groups=ind, DF)

結果は次のとおりです。

別の密度

結合密度

于 2012-11-08T20:58:48.223 に答える