Hinzufügen Kursiv gesetzt r mit den Korrelationskoeffizienten, um eine scatter-plot-Diagramm in ggplot
Ich versuche, verwenden Sie den folgenden code erzeugen Sie ein einfaches Streudiagramm mit einem Korrelationskoeffizienten hätte Kursiv gesetzt r platziert auf dem Grundstück.
data(mtcars)
# Load required libraries
require(ggplot2) # To derive the graphs
require(ggthemes) # To apply ggplot themes to the chart
require(scales) # For pretty breaks
# Function to generate correlation coefficient for the charts
corr_eqn <- function(x,y, digits = 2) {
corr_coef <- round(cor(x, y), digits = digits)
corr_coef <- expression(paste(italic(r)," = ", corr_coef))
return(corr_coef)
}
# Provide a scatter plot for income and health deprivation
ggplot(mtcars, aes(x = drat, y = wt)) +
geom_point(shape = 19, size = 2, aes(colour = as.factor(cyl))) +
geom_smooth(colour = "red", fill = "lightgreen", method = 'lm') +
ggtitle("Example") +
xlab("drat") +
ylab("wt") +
scale_colour_tableau("tableau10") +
geom_text(x = 3, y = 3,
label = corr_eqn(mtcars$drat,
mtcars$wt), parse = TRUE) +
theme(legend.key = element_blank(),
legend.background = element_rect(colour = 'black'),
legend.position = "bottom",
legend.title = element_blank(),
plot.title = element_text(lineheight = .8, face = "bold", vjust = 1),
axis.text.x = element_text(size = 11, vjust = 0.5,
hjust = 1, colour = 'black'),
axis.text.y = element_text(size = 11, colour = 'black'),
axis.title = element_text(size = 10, face = 'bold'),
axis.line = element_line(colour = "black"),
plot.background = element_rect(colour = 'black', size = 1),
panel.background = element_blank())
Stoppt der code mit der ?
mark in der Konsole. Läuft der code mit den Zeilen:
# geom_text(x = 3, y = 3,
# label = corr_eqn(mtcars$drat, mtcars$wt), parse = TRUE) +
kommentiert, erzeugt die folgende Tabelle:
Ich vermute, dass meine Funktion zum generieren von Gleichung im format r = 0.7 funktioniert nicht, wie kann ich es beheben?
- Haben Sie einen Blick auf eine ähnliche Frage.
- als eine Angelegenheit von Tatsache, ich war versucht zu schreiben, dass meine Funktion mit Diskussion in der verlinkten Frage, aber es funktioniert nicht. Klar, ich habe etwas falsch gemacht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie den Verdacht haben, müssen Sie nur optimieren Sie Ihre Funktion. Sie könnte verwendet werden
substitute
wie in diese Antwort, aber Sie können auch einfach verwendenpaste
hier.Beachten Sie, dass wenn Sie möchten, Hinzugefügt
as.character
zu dem, was Ihre ursprüngliche Funktion zurückgegeben, die Dinge analysiert. Doch das Ergebnis hätte mitcorr_coef
als string anstelle der tatsächlichen Korrelations-Koeffizient, die Sie wollte.Ich sollte auch hinzufügen, dass
geom_text
kann Ergebnis in schlechter Auflösung, wenn Sie nicht setzen den Bezeichnungen und Koordinaten in eine neue Daten.frame.Dann verwenden Sie die
data
argument undaes
fürgeom_text
:Sehen
annotate
mitgeom = "text"
als eine weitere option, die vermeidet, dass die neuen Daten.frame.geom_text
mit dersize
undfamily
Argumente bei der Verwendung vonparse = TRUE
, aber nicht die schriftart.corr_eqn <- function(x,y, digits = 2) { + corr_coef <- round(cor(x, y), digits = digits) + paste("italic(r) == ", corr_coef) + } labels = data.frame(x = 3, y = 3, label = corr_eqn(mtcars$drat, mtcars$wt))
produziert eine df mit nur einer Zeile ` x y label 3 3 Kursiv(r) == -0.71`geom_text
oder um es anders auszudrücken, vorbeilabels$label
zugeom_text
ist nicht gut genug.