web-dev-qa-db-fra.com

Ajustez la transparence (alpha) des lignes stat_smooth, pas seulement la transparence de l'intervalle de confiance

En utilisant stat_smooth () de ggplot2, je suis curieux de savoir comment on pourrait ajuster la transparence de la ligne de régression générée. En utilisant geom_points () ou geom_line (), on définit normalement une valeur pour 'alpha', indiquant le pourcentage de transparence. Cependant, avec stat_smooth (), alpha définit la transparence de l'intervalle de confiance (dans mon exemple ci-dessous, désactivé - se = FALSE).

Je n'arrive pas à trouver un moyen de rendre la ou les lignes de régression d'une transparence inférieure à 1.

Vos conseils seraient merveilleux.

Exemple de code

 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

Pour définir la valeur alpha juste pour la ligne, vous devez remplacer stat_smooth() par geom_line() puis à l'intérieur de geom_line() utilisez les mêmes arguments que dans stat_smooth() et ajoutez en outre 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

Comme alternative légèrement plus intuitive - peut-être créée depuis cette réponse - vous pouvez utiliser stat_smooth (geom="line"). L'enveloppe SE disparaît, mais vous pouvez la rajouter avec quelque chose comme:

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

La première ligne crée le SE. sans ligne (de largeur 0) et la deuxième ligne ajoute la ligne par-dessus. La documentation (actuelle) mentionne que stat_smooth est pour les géomètres non standard (par exemple "ligne").

10
Wayne