web-dev-qa-db-ja.com

信頼区間の透明度だけでなく、stat_smoothラインの透明度(アルファ)を​​調整

Ggplot2のstat_smooth()を使用して、生成された回帰直線の透明度を調整する方法に興味があります。 geom_points()またはgeom_line()を使用すると、通常、透明度のパーセントを示す「alpha」の値が設定されます。ただし、stat_smooth()では、alphaは信頼区間の透明度を設定します(以下のサンプルではオフになっています-se = FALSE)。

回帰直線を1よりも低い透明度にする方法が見つからないようです。

あなたのアドバイスは素晴らしいでしょう。

サンプルコード

 library(reshape2)
 df <- data.frame(x = 1:300)
 df$y1 <-  0.5*(1/df$x + 0.1*(df$x-1)/df$x + rnorm(300,0,0.015))
 df$y2 <-  0.5*(1/df$x + 0.3*(df$x-1)/df$x + rnorm(300,0,0.015))
 df$y3 <-  0.5*(1/df$x + 0.6*(df$x-1)/df$x + rnorm(300,0,0.015))
 df <- melt(df, id = 1)

 ggplot(df, aes(x=x, y=value, color=variable)) +
   geom_point(size=2) +
   stat_smooth(method = "lm", formula = y ~ 0 + I(1/x) + I((x-1)/x),
               se = FALSE,
               size = 1.5,
               alpha = 0.5)

enter image description here

41
EconomiCurtis

行のアルファ値を設定するには、stat_smooth()geom_line()で置き換え、geom_line()内でstat_smooth()と同じ引数を使用する必要がありますさらにstat="smooth"を追加します。

ggplot(df, aes(x=x, y=value, color=variable)) +
  geom_point(size=2) +
  geom_line(stat="smooth",method = "lm", formula = y ~ 0 + I(1/x) + I((x-1)/x),
              size = 1.5,
              linetype ="dashed",
              alpha = 0.5)

enter image description here

60
Didzis Elferts

もう少し直感的な代替策として、おそらくこの回答以降に作成されたものとして、stat_smooth (geom="line")を使用できます。 SEエンベロープは消えますが、次のように追加することができます。

geom_smooth (alpha=0.3, size=0, span=0.5) stat_smooth (geom="line", alpha=0.3, size=3, span=0.5) +

最初の行はSEを作成します。 (幅0)行なしで、2行目はその上に行を追加します。 (現在の)ドキュメントには、stat_smoothは、非標準のgeom(例: "line")用です。

10
Wayne