web-dev-qa-db-ja.com

Rggplotの透明度-他の変数を条件とするアルファ値

私は次のデータを持っています:[Rグラフィッククックブックからの例]

Cultivar Date Weight sd          n  se          big
c39     d16   3.18  0.9566144   10  0.30250803  TRUE
c39     d20   2.8   0.2788867   10  0.08819171  TRUE
c39     d21   2.74  0.9834181   10  0.3109841   TRUE
c52     d16   2.26  0.4452215   10  0.14079141  FALSE
c52     d20   3.11  0.7908505   10  0.25008887  TRUE
c52     d21   1.47  0.2110819   10  0.06674995  FALSE

バーの透明度がbig変数に依存する棒グラフが欲しいのですが。

さまざまなalpha値に応じてbig値を設定しようとした次のことを試しました。

ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(position="dodge", stat="identity")
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
  geom_bar(position="dodge", stat="identity", alpha=cabbage_exp$big=c("TRUE"= 0.9, "FALSE" = 0.35)) 
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
 geom_bar(position="dodge", stat="identity", alpha=big=c("TRUE"= 0.9, "FALSE" = 0.35))

大きな変数の値に応じて、バーの透明度を変えたいと思います。どんな助けやガイダンスも大歓迎です!

14
user3507584

scale_alpha_discreteを使用する別の可能性。ここで、range引数を使用して、「big」の各レベルに必要なalpha値を設定できます。

ggplot(data = cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar, alpha = big)) +
  geom_bar(position = "dodge", stat = "identity") +
  scale_alpha_discrete(range = c(0.35, 0.9))

enter image description here

27
Henrik

ここでの問題は、変数が離散的であるのに対し、alphaスケールは連続的であるということです。これを行う1つの方法は、プロットする前に手動でアルファ値を計算することです。

alpha <- ifelse(d$big, 0.9, 0.35)
ggplot(d, aes(x=Date, y=Weight, fill=Cultivar)) +
    geom_bar(position="dodge", stat="identity", aes(alpha=alpha))

欠点は、アルファ値の正しい凡例が得られないことです。あなたはこれでそれを削除することができます:

ggplot(d, aes(x=Date, y=Weight, fill=Cultivar)) +
    geom_bar(position="dodge", stat="identity", aes(alpha=big)) +
    scale_alpha_continuous(guide=FALSE)

最終結果 :

enter image description here

7
juba