Saya menyertakan statistik stat_poly_eq()
dalam paket saya ggpmisc
yang memungkinkan jawaban ini:
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

Statistik ini berfungsi dengan semua polinomial tanpa istilah yang hilang, dan mudah-mudahan memiliki fleksibilitas yang cukup untuk berguna secara umum. Label R ^ 2 atau R ^ 2 yang disesuaikan dapat digunakan dengan formula model apa pun yang dilengkapi dengan lm (). Menjadi statistik ggplot berperilaku seperti yang diharapkan baik dengan kelompok dan segi.
Paket 'ggpmisc' tersedia melalui CRAN.
Versi 0.2.6 baru saja diterima oleh CRAN.
Ini alamat komentar oleh @shabbychef dan @ MYaseen208.
@ MYaseen208 ini menunjukkan cara menambahkan topi .
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 Sekarang dimungkinkan untuk mencocokkan variabel dalam persamaan dengan yang digunakan untuk label sumbu. Untuk mengganti x dengan mengatakan z dan y dengan h satu akan menggunakan:
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

Menjadi ekspresi parsed R normal ini huruf yunani sekarang juga dapat digunakan baik dalam lhs dan rhs dari persamaan.
[2017-03-08] @elarry Edit untuk lebih tepatnya menjawab pertanyaan awal, menunjukkan cara menambahkan koma antara persamaan- dan R2-label.
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 Saya berikan contoh penggunaan stat_poly_eq()
pengelompokan di bawah ini.
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 Mungkin agak kontra-intuitif pada pandangan pertama, tetapi untuk mendapatkan persamaan tunggal saat menggunakan pengelompokan, seseorang harus mengikuti tata bahasa grafik. Batasi pemetaan yang membuat pengelompokan ke lapisan individual (diperlihatkan di bawah) atau pertahankan pemetaan default dan timpa dengan nilai konstan di layer di mana Anda tidak ingin pengelompokan (misalnya colour = "black"
).
Melanjutkan dari contoh sebelumnya.
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] Demi kelengkapan contoh dengan segi, menunjukkan bahwa juga dalam hal ini harapan tata bahasa grafis terpenuhi.
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()
.