Streudiagramm in R mit ggplot2 (mit Beispiel)

Diagramme sind der dritte Teil des Datenanalyseprozesses. Im ersten Teil geht es darum DatenextracProduktion, 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.

Streudiagramm in R

  • 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 ggplot2-Paket. Dieses Paket basiert auf den soliden Grundlagen des Buches โ€žGrammar of Graphicsโ€œ von Wilkinson (2005). ggplot2 ist sehr flexibel und bietet zahlreiche Mรถglichkeiten zur Diagrammspezifikation auf einem hohen Abstraktionsniveau.tracMit ggplot2 lassen sich keine dreidimensionalen Grafiken darstellen und keine interaktiven Grafiken erstellen.

In ggplot2 besteht ein Diagramm aus den folgenden Argumenten:

  • frustrierten
  • รคsthetische Karteping
  • 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 Erlรคuterung

  • 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:

Grundlegendes Streudiagramm

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 Erlรคuterung

  • 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:

Streudiagramm mit Gruppen

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 Erlรคuterung

  • Sie transformieren die x- und y-Variablen in log() direkt innerhalb der aes()-Map.ping.

Beachten Sie, dass jede andere Transformation angewendet werden kann, z. B. Standardisierung oder Normalisierung.

Ausgang:

Achse รคndern

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 Erlรคuterung

  • 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
  • Spalte = โ€œ#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:

Streudiagramm mit angepassten Werten

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 Erlรคuterung

  • 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รผge einen Titel hinzu

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 Erlรคuterung

  • 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 Titel mit einem dynamischen Namen hinzu

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 Erlรคuterung

  • 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:

Fรผgen Sie einen Untertitel hinzu

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 Erlรคuterung

  • 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:

Benennen Sie die x-Achse und die y-Achse um

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 Erlรคuterung

  • 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:

Kontrollieren Sie die Waage

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:

Thema

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:

Grundstรผcke speichern

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")

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: