Подтвердить что ты не робот

Отрегулируйте прозрачность (альфа) строк stat_smooth, а не просто прозрачность интервала доверия

Используя ggplot2 stat_smooth(), мне любопытно, как можно настроить прозрачность сгенерированной линии регрессии. Используя geom_points() или geom_line(), обычно устанавливается значение для "альфа", указывая процентную прозрачность. Однако, с 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

4b9b3361

Ответ 1

Чтобы установить значение альфа только для строки, вы должны заменить 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

Ответ 2

В качестве альтернативы, немного более интуитивно понятной - возможно, созданной после этого ответа - вы можете использовать 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-ширина), а вторая строка добавляет линию поверх нее. В документации (текущая) упоминается, что stat_smooth используется для нестандартных геометров (например, "строка" ).