2

グループ化されたバイオリン プロット (図を参照) を作成しようとしています。ここでは、4 つのカテゴリ変数に対して 3 つのレベルをプロットしています。プロットは、ボックスが背後の幅の広いバイオリン プロットと同じ色で表示が難しくなっているという事実以外のデータを考慮すると、問題なく表示されます。理想的には、すべてのボックスを全体的に白のままにしたいと考えています。ボックスの色が変わっている理由は、fill選択した に対応していることを理解しています。geom_violinの塗りつぶしをから分離する方法があるかどうか疑問に思っていgeom_boxplotます。

これが私が使用しているコードを取り除いたものです

p <- ggplot(df, aes(x=metric, y=value, fill=variable))+
geom_violin(width=0.9, position=position_dodge(0.75), bw=1.5)+
geom_boxplot(width=0.3, outlier.shape = NA, position=position_dodge(0.75))+
scale_fill_manual(values=c("gray50", "gray75", "gray100"),
                breaks=c("res.error.random", "res.error.increase", "res.error.decrease"),
                labels=c("random cost", "overestimated", "underestimated"))

私が作成しているプロットの例

4

1 に答える 1

2

すべてはあなたが書く場所に依存しますfill:

  • inside ggplot(aes()): すべての新しいレイヤーが関係します。
  • inside geom_boxplot(aes()): このレイヤーのみが関係します。

特に後でaesを使用する場合は、内に記述することが重要です。scale_fill_manual()

生成されたデータを含む完全な回答は次のとおりです。

df <- data.frame(var1 = sample(c("A", "B", "C"), 50, replace =T),
             var2 = sample(c("group1", "group2", "group3"), 50, replace =T),
             value = sample(c(1,2,3,4,5,6,7,8,9,10), 50, replace =T))

boxplot1.とviolin[ ggplot(aes(fill =))]が同色の場合:

ggplot(df, aes(x=var1, y=value, fill = var2, group = interaction(var1,var2))) +
geom_violin(width=0.9, position=position_dodge(0.75), bw=1.5) +
geom_boxplot(width=0.3, outlier.shape = NA, position=position_dodge(0.75))

ここに画像の説明を入力


2.色違い [ geom_violin(aes(fill =))] :

ggplot(df, aes(x=var1, y=value, group = interaction(var1,var2)))+
geom_violin(width=0.9, position=position_dodge(0.75), bw=1.5, aes(fill = var2))+
geom_boxplot(width=0.3, outlier.shape = NA, position=position_dodge(0.75), fill = "white")

ここに画像の説明を入力

于 2016-04-26T11:42:59.637 に答える