2

私の以前の質問に対する @ROLO からの次のコードは、3 つのプロットを生成します。

require(mice)
require(reshape2)
require(ggplot2)
dt <- nhanes
impute <- mice(dt, seed = 23109)

# Obtain the imputed data, together with the original data
imp <- complete(impute,"long", include=TRUE)
# Melt into long format
imp <- melt(imp, c(".imp",".id","age"))
# Add a variable for the plot legend
imp$Imputed<-ifelse(imp$".imp"==0,"Observed","Imputed")

# Plot. Be sure to use stat_density instead of geom_density in order
#  to prevent what you call "unwanted horizontal and vertical lines"
ggplot(imp, aes(x=value, group=.imp, colour=Imputed)) + 
    stat_density(geom = "path",position = "identity") +
    facet_wrap(~variable, ncol=2, scales="free")

ここに画像の説明を入力

私の質問は、これを変更してそれぞれを個別にプロットするにはどうすればよいですか?

4

1 に答える 1

1

Joran が言ったように、各プロットでデータのサブセットを使用できます。

ggplot(imp[imp$variable=="bmi",], aes(x=value, group=.imp, colour=Imputed)) + 
    stat_density(geom = "path",position = "identity")
ggplot(imp[imp$variable=="hyp",], aes(x=value, group=.imp, colour=Imputed)) + 
    stat_density(geom = "path",position = "identity")
ggplot(imp[imp$variable=="chl",], aes(x=value, group=.imp, colour=Imputed)) + 
    stat_density(geom = "path",position = "identity")

または、これらをループに入れることもできます

library("plyr")
d_ply(imp, .(variable), function(DF) {
    print(ggplot(DF, aes(x=value, group=.imp, colour=Imputed)) + 
        stat_density(geom = "path",position = "identity"))
})

このアプローチの欠点は、すべてのプロットが次々に表示されるため、前のプロットを画面に表示する機会がないことです。PDF に出力している場合 (直接または などを介してknitr)、すべてが書き込まれ、そのように表示されます。

于 2012-09-13T20:55:41.847 に答える