/ / ggplot2 - r、ggplot2、violin-plotでバイオリンとボックスプロットが異なる色のバイオリンプロットを作成する

ggplot2 - r、ggplot2、violin-plotでバイオリンとボックスプロットが異なる色のバイオリンプロットを作成する

私は、グループ化されたバイオリンプロットを作成しようとしています(ここでは、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"))

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

回答:

回答№1は1

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

  • 内部 ggplot(aes())すべての新しいレイヤーが考慮されます。
  • 内部 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))

1.同色 boxplot そして 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")

ここに画像の説明を入力