Direkt zum Inhalt

Wie man ein ggplot2-Histogramm in R erstellt

Lerne, wie man ein ggplot2-Histogramm in R erstellt. Erstelle Histogramme in R, die auf der Grammatik der Grafik basieren.
Aktualisierte 16. Jan. 2025  · 15 Min. Lesezeit

datarhys_an_absurdist_oil_painting_of_a_humanoid_robot_assembli_43ea48e7-758d-48ef-9154-2c1d956ec52a.png

In diesem Tutorium werden wir Verteilungen von Daten visualisieren, indem wir Histogramme mit der ggplot2-Bibliothek in R erstellen. ggplot2 ist die beliebteste Plot-Bibliothek in R und gehört zum Ökosystem der tidyverse-Bibliothek. Die Bibliothek macht es einfach, großartig aussehende und komplexe Visualisierungen mit einem intuitiven Ansatz für den Aufbau von Ebenen zu erstellen. Wie du ein Histogramm mit Basic R erstellst, erfährst du in einem separaten Lernprogramm. 

Meistere deine Datenkenntnisse mit DataCamp

Erlerne die Fähigkeiten, die du brauchst, in deinem eigenen Tempo - von den Grundlagen der Nicht-Programmierung bis hin zu Data Science und maschinellem Lernen.

Histogramme sind Visualisierungen, die Häufigkeitsverteilungen über kontinuierliche (numerische) Variablen zeigen. Histogramme ermöglichen es uns, die Anzahl der Beobachtungen in den Daten innerhalb der Bereiche zu sehen, die die kontinuierliche Variable umfasst.

Wohnungsdaten

Zuerst müssen wir die ggplot2-Bibliothek mit der Bibliotheksfunktion importieren. Dadurch werden alle verschiedenen eingebauten Funktionen der ggplot2-Bibliothek angezeigt. Wenn du ggplot2 noch nicht installiert hast, musst du es mit dem Befehl install.packages() installieren. Wir werden dasselbe für die readr-Bibliothek tun, mit der wir eine csv-Datei einlesen können, und für dplyr, mit der wir einfacher mit den eingelesenen Daten arbeiten können. 

install.packages("ggplot2")
install.packages("readr")
install.packages("dplyr")
library(ggplot2)
library(readr)
library(dplyr)

Für dieses Lernprogramm werden wir diesen Datensatz verwenden, der Details zu verschiedenen Hausangeboten enthält, darunter die Größe des Hauses, die Anzahl der Zimmer, den Preis und Informationen zum Standort. 

Wir können die Daten mit der Funktion read_csv() lesen. Wir können sie direkt von der URL lesen oder die csv-Datei in ein Verzeichnis herunterladen und sie von unserem lokalen Speicher lesen. Das erste Attribut von read_csv() ist der Speicherort der Daten, und mit dem Attribut col_select können wir die Spalten auswählen, an denen wir interessiert sind. 

home_data <- read_csv(
    "https://raw.githubusercontent.com/rashida048/Datasets/master/home_data.csv",
    col_select = c(price, condition)
)

Mit der Funktion head() können wir uns die ersten Zeilen der Daten ansehen 

head(home_data)

image6.png

Wie man ein Histogramm mit ggplot2 erstellt 

Jetzt können wir das Histogramm erstellen. Unabhängig von der Art des Diagramms, das wir in ggplot2 erstellen, beginnen wir immer mit der Funktion ggplot(), die eine Leinwand erstellt, in die wir Plot-Elemente einfügen. Sie benötigt zwei Parameter.

  • Das erste Argument ist ein Datenrahmen. Hier wollen wir home_data verwenden.
  • Das zweite Argument ist eine Zuordnung zwischen den Spalten im Datenrahmen und der Ästhetik der Darstellung. Diese Zuweisung muss die Funktion aes() aufrufen. Hier ordnen wir die Preisspalte der x-Achse zu.

Bis jetzt ist unser Code

ggplot(data = home_data, aes(x = price))

Das wird von alleine nichts Nützliches ergeben. Um daraus ein Histogramm zu machen, fügen wir mit geom_histogram() eine Histogrammgeometrie hinzu.

ggplot(data = home_data, aes(x = price)) +
  geom_histogram()

image11.png

Deskriptive Statistik zum Histogramm hinzufügen mit geom_vline()

Mit der Funktion geom_vline() können wir unserem Diagramm deskriptive Statistiken hinzufügen. Dies fügt dem Diagramm eine vertikale Liniengeometrie hinzu.

Zunächst berechnen wir eine deskriptive Statistik, in diesem Fall den mittleren Preis, mit Hilfe von dplyr summarize().

price_stats <- home_data |>
summarize(mean_price = mean(price))
price_stats
# A tibble: 1 × 1
  mean_price
      <dbl>
1    540088.

Die Funktion benötigt den Parameter xintercept und die optionalen Attribute color und linewidth, um die Farbe bzw. Größe der Linien anzupassen. Wir fügen eine mittlere Linie hinzu, indem wir das Pluszeichen verwenden, wie wir es im vorherigen Abschnitt getan haben.

ggplot(home_data, aes(x = price)) +
    geom_histogram() +
    geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2)

Beachte, dass in geom_ Funktionen die Mapping- und Datenargumente im Vergleich zu ggplot() vertauscht sind.

image8.png

Wahrscheinlichkeitsdichten anstelle von Zählungen aufzeichnen

Um dem Histogramm eine Wahrscheinlichkeitsdichte-Linie hinzuzufügen, ändern wir zunächst die y-Achse so, dass sie auf die Dichte skaliert wird. In der Funktion aes() setzen wir y auf after_stat(density)

Mit der Funktion geom_density() können wir eine Dichteebene zu unserem Diagramm hinzufügen. Hier setzen wir das Attribut color auf grün und das Attribut linewidth auf 2.

ggplot(home_data, aes(x = price, y = after_stat(density))) +
    geom_histogram() +
    geom_vline(aes(xintercept = mean_price), price_stats, color = "red", linewidth = 2) +
    geom_density(color = "green", linewidth = 2)

image4.png

Beachte, dass sich die Zahlen auf der y-Achse geändert haben.

Wie du jetzt siehst, ist die Syntax von ggplot2 einfach, aber sehr mächtig. Wir können mehrere Ebenen über einen einfachen Graphen legen, um ihn mit additiver Logik und einigen wohldefinierten eingebauten Funktionen komplexer zu machen.  

Binning mit Bin aktualisieren

Wir können das Binning unseres ggplot2-Histogramms mithilfe des Attributs bin aktualisieren. Wir setzen die Bin-Attribute gleich der Anzahl der Bins, die wir in unserem Diagramm anzeigen wollen. So können wir mehr oder weniger granulare Daten in unserem Histogramm sehen. 

ggplot(data = home_data, aes(x = price)) +
  geom_histogram(bins = 100)

image12.png

Wir können die Bin-Breite auch manuell mit dem Attribut binwidth von geom_histogram() festlegen.

ggplot(data = home_data, aes(x = price)) +
  geom_histogram(binwidth = 50000)

image5.png

Schließlich kannst du die Begrenzungen mit den Attributen Zentrum oder Begrenzung ausrichten. Wenn du möchtest, dass die Grenzen der Bins auf bestimmte Vielfache fallen, kannst du diese Attribute verwenden (es kann immer nur eines verwendet werden). Um sicherzustellen, dass die Bins auf ganzzahligen Werten enden, setze das Attribut auf 1.   

ggplot(data = home_data, aes(x = price)) +
  geom_histogram(boundary = 1)

image7.png

Anpassen der Farbe des Histogramms

In diesem Abschnitt werden wir die Farben des Histogramms ändern. Wir können die Farbe der Umrisse jedes Balkens mit dem Attribut color anpassen und wir können die Füllung der Balken mit dem Attribut fill von geom_histogram() ändern. Wir füllen die Balken mit Blau und ändern die Farbe der Umrandung in Weiß. 

ggplot(data = home_data, aes(x = price)) +
  geom_histogram(color = "white", fill = "blue")

image9.png

Anpassen der Farbe des ggplot2-Histogramms anhand von Gruppen 

Du kannst die Farben der Histogrammbalken anpassen. 

Wenn du die Ästhetik von fill (innerhalb der Funktion aes() ) änderst, ändern sich die Farben der Balken basierend auf dem Wert einer Variable im Datensatz. Diese Variable sollte kategorisch (ein Faktor) und nicht ganzzahlig sein, sodass wir sie mit der Funktion factor() umwandeln können. In diesem Beispiel betrachten wir die Zustandsvariable, die einen Wert zwischen 1 (schlechter Zustand) und 5 (hervorragender Zustand) hat. 

home_data <- home_data |>
    mutate(condition = factor(condition))

ggplot(data = home_data, aes(x = price, fill = condition)) +
    geom_histogram()

image1.png

Mit Labs Beschriftungen und Überschriften hinzufügen

Als Nächstes fügen wir mit der Funktion labs() Titel und Beschriftungen zu unserem Diagramm hinzu. Wir setzen die Attribute x, y und title auf unsere gewünschten Beschriftungen. 

ggplot(data = home_data, aes(x = price)) +
  geom_histogram() +
  labs(x ='Price (USD)', y='Number of Listings', title = 'Housing Price Distributions')

image13.png

Grenzen für die x-Achse mit xlim() setzen

Mit der Funktion xlim()  können wir die Grenzen der x-Achse unseres Plots festlegen, um die Daten, die uns interessieren, zu vergrößern. Zum Beispiel ist es manchmal hilfreich, sich auf den zentralen Teil der Verteilung zu konzentrieren, anstatt auf den langen Schwanz, den wir sehen, wenn wir die gesamte Grafik betrachten. 

Es ist auch möglich, die Grenzen der y-Achse zu ändern (mit ylim()), aber das ist für Histogramme weniger nützlich, da die automatisch berechneten Werte fast immer ideal sind.

Wir zoomen auf Preise zwischen $0 und $2M.

ggplot(home_data, aes(x = price)) +
    geom_histogram(bins = 100) +
    xlim(0, 2000000)

image3.png

Legende Position ändern 

Wenn wir die Legende in unserem Diagramm verschieben wollen, z.B. wenn wir die Bedingung in verschiedenen Farben visualisieren, können wir die Funktion theme() und das Attribut legend.position verwenden. Die Werte, die legend.position annehmen kann, sind “bottom”, “top”, “right”, oder “bottom”. Du kannst auch die Koordinaten, in denen du die Legende haben möchtest, mit c(x, y) übergeben.

ggplot(home_data, aes(x = price, fill = condition)) +
    geom_histogram() +
    theme(legend.position = "bottom")

Facetten in ggplot2 verwenden

Schließlich können wir Daten in verschiedenen Gruppen in separaten Diagrammen mit Facetten visualisieren. Dadurch wird die Visualisierung in mehrere Unterplots für jede Kategorie aufgeteilt. Das kannst du mit der Funktion facet_grid() machen. Im Folgenden werden wir die Verteilung der Preise nach verschiedenen Konditionswerten visualisieren. 

ggplot(home_data, aes(x = price)) +
  geom_histogram() +  facet_grid(vars(condition))

Die Facettierung wird im Tutorial Facetten für ggplot in R ausführlicher behandelt.

image2.png

Fazit

Um ein Histogramm in ggplot2 zu erstellen, baust du zunächst die Basis mit der Funktion ggplot() und den Parametern data und aes(). Dann fügst du die Diagrammebenen hinzu, beginnend mit der Art der Diagrammfunktion. Für ein Histogramm verwendest du die Funktion geom_histogram(). Du kannst dann weitere Anpassungsebenen hinzufügen, z. B. labs() für Achsen- und Diagrammtitel, xlim() und ylim(), um die Bereiche der Achsen festzulegen, und theme(), um die Legende zu verschieben und andere visuelle Anpassungen am Diagramm vorzunehmen. 

ggplot2 macht die Erstellung von Visualisierungen in R einfach. Du kannst einfache Graphen oder komplexere Graphen erstellen und dich dabei auf die gleiche einfache additive Syntax verlassen. Sie ist die beliebteste Graphing-Bibliothek in R.

Bring es auf die nächste Stufe

ggplot2 wird im Lernpfad Datenvisualisierung in R ausführlich behandelt, beginnend mit Einführung in die Datenvisualisierung mit ggplot2. Wie du ggplot2-Datenvisualisierungen mit anderen Tidyverse-Tools kombinierst, lernst du im Lernpfad Tidyverse Fundamentals with R. Für eine praktische Referenz über alles, was du gerade gelernt hast, lade dir den ggplot2 Spickzettel herunter.

 

Themen

Erfahre mehr über R

Zertifizierung verfügbar

Kurs

Intermediäre Datenvisualisierung mit ggplot2

4 hr
44K
Lerne, Facetten, Koordinatensysteme und Statistiken in ggplot2 zu nutzen, um aussagekräftige Diagramme zu erstellen.
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow