이 답변을 허용 하는 통계 stat_poly_eq()
를 패키지에 포함 시켰습니다 ggpmisc
.
library(ggplot2)
library(ggpmisc)
df <- data.frame(x = c(1:100))
df$y <- 2 + 3 * df$x + rnorm(100, sd = 40)
my.formula <- y ~ x
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, color="black", formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p
이 통계는 누락 된 항이없는 다항식과 함께 작동하며 일반적으로 유용 할만큼 충분한 유연성을 갖기를 바랍니다. R ^ 2 또는 조정 된 R ^ 2 레이블은 lm ()이 장착 된 모든 모델 공식과 함께 사용할 수 있습니다. ggplot 통계이기 때문에 그룹 및 패싯 모두에서 예상대로 작동합니다.
'ggpmisc'패키지는 CRAN을 통해 제공됩니다.
0.2.6 버전이 CRAN에 승인되었습니다.
@shabbychef와 @ MYaseen208의 의견을 다룹니다.
@ MYaseen208 이것은 모자 를 추가하는 방법을 보여줍니다 .
library(ggplot2)
library(ggpmisc)
df <- data.frame(x = c(1:100))
df$y <- 2 + 3 * df$x + rnorm(100, sd = 40)
my.formula <- y ~ x
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, color="black", formula = my.formula) +
stat_poly_eq(formula = my.formula,
eq.with.lhs = "italic(hat(y))~`=`~",
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p
@shabbychef 이제 방정식의 변수를 축 레이블에 사용 된 변수와 일치시킬 수 있습니다. 바꾸기하려면 X 말의와 Z 와 Y 와 H 사람이 사용하는 것을 :
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, color="black", formula = my.formula) +
stat_poly_eq(formula = my.formula,
eq.with.lhs = "italic(h)~`=`~",
eq.x.rhs = "~italic(z)",
aes(label = ..eq.label..),
parse = TRUE) +
labs(x = expression(italic(z)), y = expression(italic(h))) +
geom_point()
p
이러한 정규 R 구문 분석 된 표현식이므로 이제 그리스 문자를 방정식의 lhs와 rhs 모두에 사용할 수 있습니다.
[2017-03-08] @elarry 수식과 R2 레이블 사이에 쉼표를 추가하는 방법을 보여주는 원래 질문을보다 정확하게 해결하기 위해 편집하십시오.
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, color="black", formula = my.formula) +
stat_poly_eq(formula = my.formula,
eq.with.lhs = "italic(hat(y))~`=`~",
aes(label = paste(..eq.label.., ..rr.label.., sep = "*plain(\",\")~")),
parse = TRUE) +
geom_point()
p
[2019-10-20] @ helen.h 아래 stat_poly_eq()
는 그룹화와 함께 사용하는 예입니다 .
library(ggpmisc)
df <- data.frame(x = c(1:100))
df$y <- 20 * c(0, 1) + 3 * df$x + rnorm(100, sd = 40)
df$group <- factor(rep(c("A", "B"), 50))
my.formula <- y ~ x
p <- ggplot(data = df, aes(x = x, y = y, colour = group)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p
p <- ggplot(data = df, aes(x = x, y = y, linetype = group)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point()
p
[2020-01-21] @Herman 첫눈에 반 직관적 일 수 있지만 그룹화를 사용할 때 단일 방정식을 얻으려면 그래픽 문법을 따라야합니다. 그룹화를 생성하는 매핑을 개별 레이어로 제한하거나 (아래 그림 참조) 기본 매핑을 유지하고 그룹화를 원하지 않는 레이어의 상수 값으로 덮어 씁니다 (예 :colour = "black"
.
이전 예제에서 계속.
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point(aes(colour = group))
p
[2020-01-22] 완전성을 위해 패싯을 사용한 예를 들어,이 경우에도 그래픽 문법의 기대가 충족됨을 보여줍니다.
library(ggpmisc)
df <- data.frame(x = c(1:100))
df$y <- 20 * c(0, 1) + 3 * df$x + rnorm(100, sd = 40)
df$group <- factor(rep(c("A", "B"), 50))
my.formula <- y ~ x
p <- ggplot(data = df, aes(x = x, y = y)) +
geom_smooth(method = "lm", se=FALSE, formula = my.formula) +
stat_poly_eq(formula = my.formula,
aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")),
parse = TRUE) +
geom_point() +
facet_wrap(~group)
p
latticeExtra::lmlineq()
.