3

ファセットのように 2 つのグラフを積み重ねる方法についての解決策を見つけようとしています。1 つのグラフはデータ数を示し、2 つ目のグラフはパーセンテージを示します。

これは私にインスピレーションを与えた投稿です: Stacke different plots in a facet way

現在、2 つの独立したチャートを作成しています。

set.seed(1)
trial.id <- sample(1:6, 1000, replace = TRUE, c(".35", ".25", ".2", ".15", ".04",   ".01"))
surv <- sample(0:1, 1000, replace = TRUE)

trial.df <- data.frame(cbind(trial.id, surv))

# chart with counts information
windows(height = 800, width = 1500)
plotEX1 <- ggplot(trial.df, aes(x = as.factor(trial.id) , fill = as.factor(surv))) + 
        geom_bar(stat = "bin") +
        ggtitle("Surival by Trial\n") +
        labs(x = "\nTrial", y = "Patients (#)\n") +
        scale_fill_discrete(name = "Survival") 
plotEX1

# chart with % information
windows(height = 800, width = 1500)
plotEX2 <- ggplot(trial.df, aes(x = as.factor(trial.id) , fill = as.factor(surv))) + 
        geom_bar(stat = "bin", position = "fill") +
        ggtitle("Surival by Trial\n") +
        labs(x = "\nTrial", y = "Patients (%)\n") +
        scale_fill_discrete(name = "Survival") 
plotEX2

Trial.id は、実行されたトライアルの数を表します。surv は試行が成功した回数を表します。

plotEX1 は、実行された試行回数と成功率を示します。plotEX2 も同じですが、パーセントで表示されます。

目標は、これら 2 つのグラフを一緒に表示することです。そのため、読者は試行回数と成功率を簡単に確認できます。

私をうんざりさせているのは、データを溶かそうとしていると思います。私はいくつかのことを試しましたが、うまくいかないようです。私を正しい方向に向ける助けがあれば幸いです!

ありがとう!

4

1 に答える 1

3

私たちのコメントに従って、私はおそらく次のようなことをするでしょう:

new_dat <- melt(list(trial.df,trial.df),id.vars = 1:2)
new_dat$trial.id <- factor(new_dat$trial.id)
new_dat$surv <- factor(new_dat$surv)
ggplot() +
    facet_wrap(~L1,nrow = 2,scales = "free_y") + 
    geom_bar(data = subset(new_dat,L1 == 1),
             aes(x = trial.id , fill = surv),
             stat = "bin", 
             position = "fill") +
    geom_bar(data = subset(new_dat,L1 == 2),
             aes(x = trial.id , fill = surv),
             stat = "bin") +
    ggtitle("Surival by Trial\n") +
    labs(x = "\nTrial", y = "Patients (%)\n") +
    scale_fill_discrete(name = "Survival") 

ここに画像の説明を入力

(そして、警告を無視します。)

于 2013-08-06T21:05:39.457 に答える