Използвайки stat_smooth () на ggplot2, аз съм любопитен какможе да се регулира прозрачността на генерираната регресионна линия. Използвайки 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)
Отговори:
43 за отговор № 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)
3 за отговор № 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
е за нестандартни geoms (например "линия").