Ich habe eine Statistik stat_poly_eq()
in mein Paket aufgenommen ggpmisc
, die diese Antwort ermöglicht:
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
Diese Statistik funktioniert mit jedem Polynom ohne fehlende Begriffe und hat hoffentlich genug Flexibilität, um allgemein nützlich zu sein. Die R ^ 2- oder angepassten R ^ 2-Beschriftungen können mit jeder mit lm () ausgestatteten Modellformel verwendet werden. Als ggplot-Statistik verhält sie sich sowohl bei Gruppen als auch bei Facetten wie erwartet.
Das 'ggpmisc'-Paket ist über CRAN erhältlich.
Version 0.2.6 wurde gerade in CRAN akzeptiert.
Es werden Kommentare von @shabbychef und @ MYaseen208 behandelt.
@ MYaseen208 Dies zeigt, wie man einen Hut hinzufügt .
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 Jetzt ist es möglich, die Variablen in der Gleichung mit denen abzugleichen, die für die Achsenbeschriftungen verwendet werden. Um das x durch z und y durch h zu ersetzen, würde man verwenden:
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
Als diese normalen R-analysierten Ausdrücke können griechische Buchstaben jetzt auch sowohl im lhs als auch im rhs der Gleichung verwendet werden.
[2017-03-08] @elarry Bearbeiten, um die ursprüngliche Frage genauer zu beantworten, und zeigen, wie ein Komma zwischen den Gleichungs- und R2-Bezeichnungen eingefügt wird.
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 Ich gebe unten Beispiele für die Verwendung stat_poly_eq()
mit Gruppierung.
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 Es mag auf den ersten Blick etwas kontraintuitiv sein, aber um eine einzige Gleichung zu erhalten, wenn man eine Gruppierung verwendet, muss man der Grammatik der Grafiken folgen. Beschränken Sie entweder die Zuordnung, mit der die Gruppierung erstellt wird, auf einzelne Ebenen (siehe unten) oder behalten Sie die Standardzuordnung bei und überschreiben Sie sie mit einem konstanten Wert in der Ebene, in der Sie die Gruppierung nicht möchten (z colour = "black"
. B. ).
Fortsetzung des vorherigen Beispiels.
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] Der Vollständigkeit halber ein Beispiel mit Facetten, das zeigt, dass auch in diesem Fall die Erwartungen an die Grammatik von Grafiken erfüllt sind.
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()
.