Streudiagramm in R mit ggplot2 (mit Beispiel)
Diagramme sind der dritte Teil des Datenanalyseprozesses. Im ersten Teil geht es darum Datenextraktion, befasst sich der zweite Teil mit Bereinigen und Bearbeiten der Daten. Endlich muss der Datenwissenschaftler es vielleicht tun seine Ergebnisse grafisch kommunizieren.
Der Job des Datenwissenschaftlers kann im folgenden Bild überprüft werden
- Die erste Aufgabe eines Datenwissenschaftlers besteht darin, eine Forschungsfrage zu definieren. Diese Forschungsfrage hängt von den Zielen und Zielen des Projekts ab.
- Danach ist eine der wichtigsten Aufgaben das Feature Engineering. Der Datenwissenschaftler muss die Daten sammeln, bearbeiten und bereinigen
- Wenn dieser Schritt abgeschlossen ist, kann er mit der Erkundung des Datensatzes beginnen. Manchmal ist es aufgrund einer neuen Entdeckung notwendig, die ursprüngliche Hypothese zu verfeinern und zu ändern.
- Wenn das erläuternd Um eine Analyse zu erreichen, muss der Datenwissenschaftler die Fähigkeit des Lesers berücksichtigen die zugrunde liegenden Konzepte und Modelle verstehen.
- Seine Ergebnisse sollten in einem Format präsentiert werden, das für alle Beteiligten verständlich ist. Eine der besten Methoden, um mit uns kommunizieren, Die Ergebnisse werden durch a Graph.
- Diagramme sind ein unglaubliches Werkzeug zur Vereinfachung komplexer Analysen.
ggplot2-Paket
Dieser Teil des Tutorials konzentriert sich auf die Erstellung von Grafiken/Diagrammen mit R.
In diesem Tutorial verwenden Sie das Paket ggplot2. Dieses Paket basiert auf der konsistenten Grundlage des Buches Grammar of Graphics von Wilkinson, 2005. ggplot2 ist sehr flexibel, enthält viele Themen und Handlungsspezifikationen auf einem hohen Abstraktionsniveau. Mit ggplot2 können Sie keine dreidimensionalen Grafiken plotten und keine interaktiven Grafiken erstellen.
In ggplot2 besteht ein Diagramm aus den folgenden Argumenten:
- die Datenerfassung
- Ästhetische Kartierung
- geometrisches Objekt
- statistische Transformationen
- unsere Tonleiter
- Koordinatensystem
- Positionsanpassungen
- Facettierung
Im Tutorial erfahren Sie, wie Sie diese Argumente steuern.
Die grundlegende Syntax von ggplot2 ist:
ggplot(data, mapping=aes()) + geometric object arguments: data: Dataset used to plot the graph mapping: Control the x and y-axis geometric object: The type of plot you want to show. The most common object are: - Point: `geom_point()` - Bar: `geom_bar()` - Line: `geom_line()` - Histogram: `geom_histogram()`
Streudiagramm
Sehen wir uns an, wie ggplot mit dem mtcars-Datensatz funktioniert. Sie beginnen mit der Darstellung eines Streudiagramms der Variablen mpg und drat.
Grundlegendes Streudiagramm
library(ggplot2) ggplot(mtcars, aes(x = drat, y = mpg)) + geom_point()
Code Erklärung
- Sie übergeben zunächst den Datensatz mtcars an ggplot.
- Innerhalb des aes()-Arguments fügen Sie die x-Achse und die y-Achse hinzu.
- Das +-Zeichen bedeutet, dass R den Code weiterlesen soll. Es unterbricht den Code und macht ihn dadurch lesbarer.
- Verwenden Sie geom_point() für das geometrische Objekt.
Ausgang:
Streudiagramm mit Gruppen
Manchmal kann es interessant sein, die Werte anhand einer Datengruppe (z. B. Daten auf Faktorebene) zu unterscheiden.
ggplot(mtcars, aes(x = mpg, y = drat)) + geom_point(aes(color = factor(gear)))
Code Erklärung
- Die aes() innerhalb von geom_point() steuert die Farbe der Gruppe. Die Gruppe sollte eine Faktorvariable sein. Somit rechnet man den variablen Gang in einen Faktor um.
- Insgesamt haben Sie den Code aes(color =factor(gear)), der die Farbe der Punkte ändert.
Ausgang:
Achse wechseln
Die Neuskalierung der Daten ist ein großer Teil der Arbeit eines Datenwissenschaftlers. In seltenen Fällen liegen Daten in einer schönen Glockenform vor. Eine Lösung, um Ihre Daten weniger anfällig für Ausreißer zu machen, besteht darin, sie neu zu skalieren.
ggplot(mtcars, aes(x = log(mpg), y = log(drat))) + geom_point(aes(color = factor(gear)))
Code Erklärung
- Sie transformieren die x- und y-Variablen in log() direkt innerhalb der aes()-Zuordnung.
Beachten Sie, dass jede andere Transformation angewendet werden kann, z. B. Standardisierung oder Normalisierung.
Ausgang:
Streudiagramm mit angepassten Werten
Sie können dem Diagramm eine weitere Informationsebene hinzufügen. Sie können den angepassten Wert einer linearen Regression grafisch darstellen.
my_graph <- ggplot(mtcars, aes(x = log(mpg), y = log(drat))) + geom_point(aes(color = factor(gear))) + stat_smooth(method = "lm", col = "#C42126", se = FALSE, size = 1) my_graph
Code Erklärung
- graph: Sie speichern Ihren Graphen in der Variable graph. Dies ist hilfreich für die weitere Verwendung oder um zu komplexe Codezeilen zu vermeiden.
- Das Argument stat_smooth() steuert die Glättungsmethode
- method = „lm“: Lineare Regression
- col = „#C42126“: Code für die rote Farbe der Linie
- se = FALSE: Standardfehler nicht anzeigen
- Größe = 1: Die Größe der Linie ist 1
Ausgang:
Beachten Sie, dass andere Glättungsmethoden verfügbar sind
- glm
- gam
- Löss: Standardwert
- Felge
Fügen Sie dem Diagramm Informationen hinzu
Bisher haben wir den Diagrammen keine Informationen hinzugefügt. Diagramme müssen informativ sein. Der Leser sollte die Geschichte hinter der Datenanalyse allein durch Betrachten des Diagramms erkennen, ohne zusätzliche Dokumentation zu konsultieren. Daher benötigen Diagramme gute Beschriftungen. Sie können Beschriftungen mit der Funktion labs() hinzufügen.
Die grundlegende Syntax für lab() ist:
lab(title = "Hello Guru99") argument: - title: Control the title. It is possible to change or add title with: - subtitle: Add subtitle below title - caption: Add caption below the graph - x: rename x-axis - y: rename y-axis Example:lab(title = "Hello Guru99", subtitle = "My first plot")
Titel hinzufügen
Eine obligatorische Information, die hinzugefügt werden muss, ist natürlich ein Titel.
my_graph + labs( title = "Plot Mile per hours and drat, in log" )
Code Erklärung
- my_graph: Sie verwenden den von Ihnen gespeicherten Graphen. Dadurch wird vermieden, dass jedes Mal, wenn Sie dem Diagramm neue Informationen hinzufügen, alle Codes neu geschrieben werden.
- Sie schließen den Titel in lab() ein.
- Code für die rote Farbe der Linie
- se = FALSE: Standardfehler nicht anzeigen
- Größe = 1: Die Größe der Linie ist 1
Ausgang:
Fügen Sie einen Titel mit einem dynamischen Namen hinzu
Ein dynamischer Titel ist hilfreich, um dem Titel genauere Informationen hinzuzufügen.
Mit der Funktion paste() können Sie statischen und dynamischen Text drucken. Die grundlegende Syntax von paste() lautet:
paste("This is a text", A) arguments - " ": Text inside the quotation marks are the static text - A: Display the variable stored in A - Note you can add as much static text and variable as you want. You need to separate them with a comma
Ejemplo:
A <-2010 paste("The first year is", A)
Ausgang:
## [1] "The first year is 2010"
B <-2018 paste("The first year is", A, "and the last year is", B)
Ausgang:
## [1] "The first year is 2010 and the last year is 2018"
Sie können unserem Diagramm einen dynamischen Namen hinzufügen, nämlich den Durchschnitt von mpg.
mean_mpg <- mean(mtcars$mpg) my_graph + labs( title = paste("Plot Mile per hours and drat, in log. Average mpg is", mean_mpg) )
Code Erklärung
- Sie erstellen den Durchschnitt von mpg mit dem in der Variablen „mean_mpg“ gespeicherten Mittelwert (mtcars$mpg).
- Sie verwenden paste() mit mean_mpg, um einen dynamischen Titel zu erstellen, der den Mittelwert von mpg zurückgibt
Ausgang:
Fügen Sie einen Untertitel hinzu
Zwei zusätzliche Details können Ihr Diagramm anschaulicher machen. Sie sprechen vom Untertitel und der Bildunterschrift. Der Untertitel steht direkt unter dem Titel. Die Bildunterschrift kann Aufschluss darüber geben, wer die Berechnung durchgeführt hat und aus welcher Quelle die Daten stammen.
my_graph + labs( title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Code Erklärung
- Im lab() haben Sie Folgendes hinzugefügt:
- Titel = „Beziehung zwischen Meile pro Stunde und Drat“: Titel hinzufügen
- subtitle = „Beziehungsaufschlüsselung nach Ausrüstungsklasse“: Untertitel hinzufügen
- caption = „Eigene Berechnung des Autors: Bildunterschrift hinzufügen
- Sie trennen jede neue Information durch ein Komma, ,
- Beachten Sie, dass Sie die Codezeilen umbrechen. Es ist nicht zwingend erforderlich und hilft nur, den Code leichter zu lesen
Ausgang:
X-Achse und Y-Achse umbenennen
Variablen selbst im Datensatz sind möglicherweise nicht immer explizit oder verwenden vereinbarungsgemäß das _, wenn es mehrere Wörter gibt (z. B. GDP_CAP). Sie möchten nicht, dass ein solcher Name in Ihrem Diagramm erscheint. Es ist wichtig, den Namen zu ändern oder weitere Details hinzuzufügen, z. B. die Einheiten.
my_graph + labs( x = "Drat definition", y = "Mile per hours", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Code Erklärung
- Im lab() haben Sie Folgendes hinzugefügt:
- x = „Drat-Definition“: Ändern Sie den Namen der x-Achse
- y = „Meile pro Stunde“: Ändere den Namen der y-Achse
Ausgang:
Kontrollieren Sie die Waage
Sie können die Skalierung der Achse steuern.
Die Funktion seq() ist praktisch, wenn Sie eine Zahlenfolge erstellen müssen. Die grundlegende Syntax lautet:
seq(begin, last, by = x) arguments: - begin: First number of the sequence - last: Last number of the sequence - by= x: The step. For instance, if x is 2, the code adds 2 to `begin-1` until it reaches `last`
Wenn Sie beispielsweise einen Bereich von 0 bis 12 mit einer Schrittweite von 3 erstellen möchten, erhalten Sie vier Zahlen: 0 4 8 12
seq(0, 12,4)
Ausgang:
## [1] 0 4 8 12
Sie können die Skalierung der x- und y-Achse wie folgt steuern
my_graph + scale_x_continuous(breaks = seq(1, 3.6, by = 0.2)) + scale_y_continuous(breaks = seq(1, 1.6, by = 0.1)) + labs( x = "Drat definition", y = "Mile per hours", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Code Erklärung
- Die Funktion scale_y_continuous() steuert die y-Achse
- Die Funktion scale_x_continuous() steuert die x-Achse.
- Der Parameter breaks steuert die Aufteilung der Achse. Sie können die Zahlenfolge manuell hinzufügen oder die Funktion seq() verwenden:
- seq(1, 3.6, by = 0.2): Erstelle sechs Zahlen von 2.4 bis 3.4 mit einer Schrittweite von 3
- seq(1, 1.6, by = 0.1): Erstelle sieben Zahlen von 1 bis 1.6 mit einer Schrittweite von 1
Ausgang:
Thema
Schließlich ermöglicht uns R, unsere Handlung mit verschiedenen Themen anzupassen. Die Bibliothek ggplot2 umfasst acht Themen:
- theme_bw()
- theme_light()
- theme_classis()
- theme_linedraw()
- theme_dark()
- theme_minimal()
- theme_gray()
- theme_void()
my_graph + theme_dark() + labs( x = "Drat definition, in log", y = "Mile per hours, in log", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Ausgang:
Grundstücke speichern
Nach all diesen Schritten ist es an der Zeit, Ihr Diagramm zu speichern und zu teilen. Sie fügen ggsave('NAME OF THE FILE) direkt nach dem Zeichnen des Diagramms hinzu und es wird auf der Festplatte gespeichert.
Das Diagramm wird im Arbeitsverzeichnis gespeichert. Um das Arbeitsverzeichnis zu überprüfen, können Sie diesen Code ausführen:
directory <-getwd() directory
Lassen Sie uns Ihr fantastisches Diagramm zeichnen, speichern und den Standort überprüfen
my_graph + theme_dark() + labs( x = "Drat definition, in log", y = "Mile per hours, in log", color = "Gear", title = "Relation between Mile per hours and drat", subtitle = "Relationship break down by gear class", caption = "Authors own computation" )
Ausgang:
ggsave("my_fantastic_plot.png")
Ausgang:
## Saving 5 x 4 in image
Hinweis: Nur zu pädagogischen Zwecken haben wir eine Funktion namens open_folder() erstellt, um den Verzeichnisordner für Sie zu öffnen. Sie müssen nur den folgenden Code ausführen und sehen, wo das Bild gespeichert ist. Sie sollten eine Datei mit dem Namen my_fantastic_plot.png sehen.
# Run this code to create the function open_folder <- function(dir) { if (.Platform['OS.type'] == "windows") { shell.exec(dir) } else { system(paste(Sys.getenv("R_BROWSER"), dir)) } } # Call the function to open the folder open_folder(directory)
Zusammenfassung
Sie können die Argumente zum Erstellen eines Streudiagramms in der folgenden Tabelle zusammenfassen:
Ziel | Code |
---|---|
Grundlegendes Streudiagramm |
ggplot(df, aes(x = x1, y = y)) + geom_point() |
Streudiagramm mit Farbgruppe |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) + stat_smooth(method = "lm") |
Fügen Sie angepasste Werte hinzu |
ggplot(df, aes(x = x1, y = y)) + geom_point(aes(color = factor(x1)) |
Titel hinzufügen |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(title = paste("Hello Guru99")) |
Untertitel hinzufügen |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(subtitle = paste("Hello Guru99")) |
x umbenennen |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(x = "X1") |
Benennen Sie y um |
ggplot(df, aes(x = x1, y = y)) + geom_point() + labs(y = "y1") |
Kontrollieren Sie die Waage |
ggplot(df, aes(x = x1, y = y)) + geom_point() + scale_y_continuous(breaks = seq(10, 35, by = 10)) + scale_x_continuous(breaks = seq(2, 5, by = 1) |
Erstellen Sie Protokolle |
ggplot(df, aes(x =log(x1), y = log(y))) + geom_point() |
Thema |
ggplot(df, aes(x = x1, y = y)) + geom_point() + theme_classic() |
Gespeichert |
ggsave("my_fantastic_plot.png") |