Balkendiagramm und Histogramm in R mit Beispiel

⚡ Intelligente Zusammenfassung

Balkendiagramme und Histogramme in R werden mit ggplot2 erstellt, wobei geom_bar() für kategoriale Häufigkeiten und geom_histogram() für stetige Verteilungen verwendet werden. Diese Anleitung zeigt, wie man Farben und Gruppen anpasst.pingStapelung, Orientierung, Binning und Beschriftungen in den Balken des mtcars-Datensatzes.

  • 📊 Kernmerkmal: Ein Balkendiagramm fasst eine kategoriale Variable zusammen, während ein Histogramm eine einzelne stetige Variable in Intervalle unterteilt.
  • 🧱 Grammatik der Grafik: Jedes Diagramm kombiniert einen Datensatz, eine aes()-Kartepingund ein geometrisches Objekt, das mit einem Pluszeichen verbunden ist.
  • ???? Farbkontrolle: Verwenden Sie `fill` innerhalb von `geom_bar()` für eine einheitliche Farbe und innerhalb von `aes()`, um die Balken nach Gruppen einzufärben.
  • 📐 Positionsanpassungen: position = “fill” wandelt Zählwerte in Prozentwerte um und position_dodge() platziert gruppierte Balken nebeneinander.
  • 🔢 Werte grafisch darstellen: Übergeben Sie stat = “identity” wenn die y-Achse bereits eine berechnete Statistik enthält, wie z. B. einen Gruppenmittelwert.
  • 📏 Histogramm-Gruppierung: Setzen Sie die Anzahl der Bins oder die Binbreite in geom_histogram(), da der Standardwert von 30 Bins selten zu den Daten passt.

Balkendiagramm-Histogramm in R

Was ist ein Balkendiagramm in R?

Ein Balkendiagramm ist eine großartige Möglichkeit, kategoriale Variablen auf der x-Achse anzuzeigen. Diese Art von Diagramm bezeichnet zwei Aspekte auf der y-Achse.

  1. Die erste Funktion zählt die Anzahl der Vorkommen in jeder Gruppe.
  2. Die zweite Grafik zeigt eine zusammenfassende Statistik (Minimum, Maximum, Durchschnitt usw.) einer Variablen auf der y-Achse.

Sie werden den Datensatz mtcars verwenden, der die folgenden Variablen enthält:

  • Zyl: Nummer des Zylinders im Auto. Numerische Variable
  • am: Getriebetyp. 0 für Automatik und 1 für Handschaltung. Numerische Variable
  • mpg: Meilen pro Gallone. Numerische Variable

Da Histogramme einander so ähnlich sehen, lohnt es sich, die Unterschiede zu klären, bevor man mit dem Programmieren beginnt.

Balkendiagramm vs. Histogramm in R: Wichtigste Unterschiede

Die beiden Diagramme sehen ähnlich aus und werden ständig verwechselt. Sie beantworten unterschiedliche Fragen und verwenden unterschiedliche geometrische Objekte.

Eigenschaften Bar Chart Histogramm
Variable auf der X-Achse Kategorisch oder Faktor Kontinuierlich und numerisch
Was ein Balken darstellt Eine Kategorie Ein Intervall oder eine Werteklasse
Lücken zwischen den Balken Ja, die Kategorien sind getrennt. Nein, die Mülltonnen stehen nebeneinander.
Barbestellung Kann frei umgeordnet werden durch die numerische Skala festgelegt
Frage beantwortet Wie schneiden die Gruppen im Vergleich ab? Wie ist eine Variable verteilt?
ggplot2-Objekt geom_bar() geom_histogram()

Als Faustregel gilt: Wenn eine Neuanordnung der Balken noch Sinn ergibt, handelt es sich um ein Balkendiagramm. Würde eine Neuanordnung die Aussagekraft zerstören, hat man ein Histogramm. Für quartilsbasierte Zusammenfassungen derselben stetigen Variable verwendet man ein Box-Plot.

Wie man ein Balkendiagramm in R erstellt

So erstellen Sie ein Diagramm in Rkönnen Sie die Bibliothek ggplot verwenden, die zur Veröffentlichung bereite Diagramme erstellt. Die grundlegende Syntax dieser Bibliothek lautet:

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 objects are:

- Point: `geom_point()`
- Bar: `geom_bar()`
- Line: `geom_line()`
- Histogram: `geom_histogram()` 

Dieses Tutorial konzentriert sich auf das geometrische Objekt geom_bar(), das das Balkendiagramm zeichnet, und auf geom_histogram() für kontinuierliche Daten.

Balkendiagramm: Anzahl

Ihr erstes Diagramm zeigt die Häufigkeit des Zylinders mit geom_bar(). Der folgende Code ist die grundlegendste Syntax.

library(ggplot2)
# Most basic bar chart
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar()

Code Erläuterung

  • Sie übergeben den Datensatz mtcars an ggplot.
  • Innerhalb des Arguments aes() wird die x-Achse auf die Faktorvariable cyl gesetzt.
  • Das +-Zeichen bedeutet, dass R den Code weiterlesen soll. Es unterbricht den Code und macht ihn dadurch lesbarer.
  • Verwenden Sie geom_bar() für das geometrische Objekt.

Ausgang:

Balkendiagramm: Anzahl

Hinweis: Stellen Sie sicher, dass Sie die Variablen in einen Faktor umwandeln, da R die Variablen sonst als numerisch behandelt. Siehe das Beispiel unten.

Balkendiagramm: Anzahl

Passen Sie das Diagramm an

Zur Anpassung des Diagramms können vier Argumente übergeben werden:

- `stat`: Controls what is plotted on the y-axis. By default `count`, which tallies rows. To plot a value you already computed, pass `stat = "identity"`
- `alpha`: Control density of the color
- `fill`: Change the color of the bar
- `size`: Control the size the bar	

Ändern Sie die Farbe der Balken

Sie können die Farbe der Balken ändern. Beachten Sie, dass die Farben der Balken alle ähnlich sind.

# Change the color of the bars
ggplot(mtcars, aes(x = factor(cyl))) +
    geom_bar(fill = "coral") +
    theme_classic()

Code Erläuterung

  • Die Farben der Balken werden durch die aes()-Map gesteuert.ping Innerhalb des geometrischen Objekts (also nicht in ggplot()). Sie können die Farbe mit den fill-Argumenten ändern. Hier wählen Sie die Korallenfarbe.

Ausgang:

Ändern Sie die Farbe der Balken

Sie können diesen Code verwenden:

grDevices::colors()

um alle in R verfügbaren Farben zu sehen. Es gibt rund 650 Farben.

Ändern Sie die Intensität

Sie können die Intensität der Balkenfarbe erhöhen oder verringern

# Change intensity
ggplot(mtcars,
        aes(factor(cyl))) +
    geom_bar(fill = "coral",
        alpha = 0.5) +
    theme_classic()

Code Erläuterung

  • Um die Intensität des Balkens zu erhöhen oder zu verringern, können Sie den Alpha-Wert ändern. Ein hoher Alpha-Wert erhöht die Intensität, ein niedriger Wert verringert sie. Der Alpha-Wert liegt zwischen 0 und 1. Bei 1 entspricht die Farbe exakt der Farbpalette; bei 0 ist der Balken unsichtbar. Hier wählen Sie Alpha = 0.5.

Ausgang:

Ändern Sie die Intensität

Farbe nach Gruppen

Sie können die Farben der Balken ändern, d. h. eine andere Farbe für jede Gruppe. Wenn die Variable cyl beispielsweise drei Ebenen hat, können Sie das Balkendiagramm mit drei Farben zeichnen.

# Color by group
ggplot(mtcars, aes(factor(cyl),
        fill = factor(cyl))) +
    geom_bar()

Code Erläuterung

  • Das Argument `fill` innerhalb von `aes()` ändert die Farbe des Balkens. Sie ändern die Farbe, indem Sie `fill = x-Achsen-Variable` zuweisen. In Ihrem Beispiel ist die x-Achsen-Variable `cyl`; `fill = factor(cyl)`

Ausgang:

Farbe nach Gruppen

Fügen Sie eine Gruppe in den Balken hinzu

Sie können die Y-Achse noch weiter aufteilen, indem Sie eine weitere Faktorebene verwenden. Sie können beispielsweise die Anzahl der automatischen und manuellen Getriebe basierend auf dem Zylindertyp zählen.

Sie gehen wie folgt vor:

  • Schritt 1: Erstellen Sie den Datenrahmen mit dem mtcars-Datensatz
  • Schritt 2: Beschriften Sie die Variable am mit auto für Automatikgetriebe und man für manuelles Getriebe. Konvertieren Sie am und cyl als Faktor, damit Sie factor() in der Funktion ggplot() nicht verwenden müssen.
  • Schritt 3: Zeichnen Sie das Balkendiagramm, um die Anzahl der Übertragungen pro Zylinder zu zählen
library(dplyr)
# Step 1
data <- mtcars %>% 
#Step 2
mutate(am = factor(am, labels = c("auto", "man")),
    cyl = factor(cyl))

Sobald der Datensatz bereit ist, können Sie das Diagramm erstellen:

# Schritt 3

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar() +
    theme_classic()

Code Erläuterung

  • Der ggplot()-Aufruf empfängt die Datensatzdaten und die aes()-Karteping.
  • In aes() fügen Sie die Variable x-Achse ein und welche Variable zum Füllen des Balkens erforderlich ist (z. B. bin).
  • geom_bar(): Erstellt das Balkendiagramm

Ausgang:

Fügen Sie eine Gruppe in den Bars hinzu

Die Karteping Der Balken wird mit zwei Farben gefüllt, eine für jede Stufe. Die Gruppierung lässt sich mühelos ändern, indem man andere Faktorvariablen im Datensatz auswählt.

Balkendiagramm in Prozent

Sie können den Balken auch in Prozent anstelle der Rohzahl anzeigen.

# Balkendiagramm in Prozent

ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = "fill") +
    theme_classic()

Code Erläuterung

  • Verwenden Sie position = „fill“ im Argument geom_bar(), um eine Grafik mit Prozentangaben auf der y-Achse zu erstellen.

Ausgang:

Balkendiagramm in Prozent

Nebeneinander angeordnete Balken

Es ist einfach, das Balkendiagramm mit der Gruppenvariablen nebeneinander zu zeichnen.

# Bar chart side by side
ggplot(data, aes(x = cyl, fill = am)) +
    geom_bar(position = position_dodge()) +
    theme_classic()

Code Erläuterung

  • position=position_dodge(): Gibt explizit an, wie die Balken angeordnet werden sollen

Ausgang:

Side-by-Side-Bars

Balkendiagramm mit zusammenfassender Statistik

Im zweiten Teil des Tutorials zeigt die y-Achse einen berechneten Wert anstelle einer Anzahl an. Beachten Sie, dass es sich hierbei weiterhin um ein Balkendiagramm handelt; ein echtes Histogramm wird weiter unten behandelt und verwendet ein anderes geometrisches Objekt.

Ihr Ziel besteht darin, ein Diagramm mit der durchschnittlichen Meile pro Gallone für jeden Zylindertyp zu erstellen. Um ein informatives Diagramm zu zeichnen, gehen Sie folgendermaßen vor:

  • Schritt 1: Erstellen Sie eine neue Variable mit der durchschnittlichen Meile pro Gallone pro Zylinder
  • Schritt 2: Erstellen Sie ein einfaches Histogramm
  • Schritt 3: Ändern Sie die Ausrichtung
  • Schritt 4: Ändern Sie die Farbe
  • Schritt 5: Ändern Sie die Größe
  • Schritt 6: Fügen Sie dem Diagramm Beschriftungen hinzu

Schritt 1) Erstellen Sie eine neue Variable

Sie erstellen einen Datenrahmen mit dem Namen data_histogram, der einfach die durchschnittlichen Meilen pro Gallone basierend auf der Anzahl der Zylinder im Auto zurückgibt. Sie nennen diese neue Variable „mean_mpg“ und runden den Mittelwert mit zwei Dezimalstellen.

# Schritt 1

data_histogram <- mtcars %>%
mutate(cyl = factor(cyl)) %>%
group_by(cyl) %>%
summarize(mean_mpg = round(mean(mpg), 2))

Schritt 2) Erstellen Sie ein einfaches Histogramm

Sie können das Histogramm erstellen. Es ist noch nicht ausgereift genug, um es einem Kunden zu präsentieren, aber es zeigt bereits den Trend.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity")

Code Erläuterung

  • Das aes() hat nun zwei Variablen. Die Variable cyl bezieht sich auf die x-Achse und „mean_mpg“ ist die y-Achse.
  • Sie übergeben stat = “identity” dafür, dass geom_bar() die Variable für die y-Achse unverändert verwendet, anstatt Zeilen zu zählen. Der Standardwert für geom_bar() ist stat = “count”.

Ausgang:

Histogramm

Schritt 3) Ändern Sie die Ausrichtung

Sie ändern die Ausrichtung des Diagramms von vertikal auf horizontal.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg)) +
    geom_bar(stat = "identity") +
    coord_flip()

Code Erläuterung

  • Sie können die Ausrichtung des Diagramms mit coord_flip() steuern.

Ausgang:

Histogramm

Schritt 4) Farbe ändern

Sie können die Farben der Balken entsprechend der Faktorstufe der x-Achsenvariablen unterscheiden.

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    coord_flip() +
    theme_classic()

Code Erläuterung

  • Sie können den Graphen gruppiert mit der Funktion fill= cyl darstellen.pingR kümmert sich automatisch um die Farben basierend auf den Werten der Variable cyl.

Ausgang:

Histogramm

Schritt 5) Ändern Sie die Größe

Um das Diagramm schöner aussehen zu lassen, verringern Sie die Breite des Balkens.

graph <- ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity",
        width = 0.5) +
    coord_flip() +
    theme_classic()

Code Erläuterung

  • Das Argument `width` in `geom_bar()` steuert die Dicke des Balkens. Ein größerer Wert macht ihn breiter.
  • Die Grafik wird im Objektgraphen gespeichert, da sie im nächsten Schritt unverändert wiederverwendet wird. Das Speichern von Zwischengrafiken sorgt für lesbaren Code.

Ausgang:

Histogramm

Schritt 6) Fügen Sie dem Diagramm Beschriftungen hinzu

Im letzten Schritt wird der Wert von mean_mpg als Beschriftung in jeden Balken eingefügt.

graph +
    geom_text(aes(label = mean_mpg),
        hjust = 1.5,
        color = "white",
        size = 3) +
    theme_classic()

Code Erläuterung

  • Die Funktion geom_text() ist nützlich, um die Ästhetik des Textes zu steuern.
    • label=: Fügen Sie eine Beschriftung innerhalb der Balken hinzu
    • mean_mpg: Verwenden Sie die Variable „mean_mpg“ für die Beschriftung
  • Mit hjust wird die Position der Beschriftung entlang des Balkens gesteuert. Werte nahe 1 platzieren sie nahe dem Ende des Balkens, größere Werte verschieben sie weiter nach hinten zur Achse. Bei vertikaler Ausrichtung des Diagramms muss hjust durch vjust ersetzt werden.
  • color=“white“: Ändern Sie die Farbe des Textes. Hier verwenden Sie die weiße Farbe.
  • size=3: Legen Sie die Größe des Textes fest.

Ausgang:

Histogramm

Wie man Balken in einem Balkendiagramm in R anordnet und beschriftet

Zwei letzte Handgriffe trennen ein Entwurfsdiagramm von einem veröffentlichungsreifen: das Sortieren der Balken nach Wert und das korrekte Beschriften der Achsen.

Riegel neu anordnen. ggplot2 sortiert Faktorstufen standardmäßig alphabetisch, was selten die aussagekräftigste Reihenfolge ist. Um nach einer zweiten Variable zu sortieren, kann die Variable x in reorder() eingeschlossen werden.

# Sort the bars from lowest to highest mean_mpg
ggplot(data_histogram, aes(x = reorder(cyl, mean_mpg), y = mean_mpg)) +
    geom_bar(stat = "identity", fill = "coral") +
    theme_classic()

Um die Sortierrichtung umzukehren, wird der Sortiervariablen ein Minuszeichen vorangestellt, z. B. reorder(cyl, -mean_mpg).

Hinzufügen von Titeln und Achsenbeschriftungen. Die Funktion labs() setzt alle Textelemente mit einem einzigen Aufruf:

ggplot(data_histogram, aes(x = cyl, y = mean_mpg, fill = cyl)) +
    geom_bar(stat = "identity") +
    labs(title = "Average fuel economy by cylinder count",
        subtitle = "mtcars dataset",
        x = "Number of cylinders",
        y = "Mean miles per gallon",
        fill = "Cylinders",
        caption = "Source: mtcars") +
    theme_classic()

Setzen Sie fill = NULL innerhalb von labs(), um den Legendentitel vollständig zu entfernen, und verwenden Sie theme(legend.position = “none”), um die Legende zu entfernen, wenn die x-Achse die Gruppen bereits benennt.

Sie wählen Ihre eigenen Farben. Ersetzen Sie die Standardpalette durch eine explizite, damit das Diagramm Ihrem Corporate Design entspricht:

scale_fill_manual(values = c("4" = "#0e9cd1", "6" = "coral", "8" = "grey40"))

Wie man in R mit geom_histogram() ein Histogramm erstellt

Ein Histogramm zeigt die Verteilung einer einzelnen stetigen Variablen. Anstatt Kategorien zu zählen, unterteilt ggplot2 den Zahlenbereich in Klassen und zählt, wie viele Beobachtungen in jede Klasse fallen.

library(ggplot2)
# Most basic histogram
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram()

R gibt eine Meldung aus, die empfiehlt, eine geeignetere Anzahl von Bins zu wählen, da die Standardeinstellung von 30 Bins willkürlich ist. Dies wird durch zwei Argumente gesteuert:

  • BehälterDie Anzahl der Intervalle, in die der Bereich unterteilt werden soll.
  • FächerbreiteDie Breite jedes Intervalls, ausgedrückt in den Einheiten der Variablen. Verwenden Sie diese Option, wenn die Einheiten sinnvoll sind.
# Set the number of bins
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram(bins = 10, fill = "coral", color = "white") +
    theme_classic()

# Or set the width of each bin instead
ggplot(mtcars, aes(x = mpg)) +
    geom_histogram(binwidth = 4, fill = "coral", color = "white") +
    theme_classic()

Die Einteilung in Bins ist die wichtigste Entscheidung bei der Erstellung eines Histogramms. Zu wenige Bins verdecken die eigentliche Struktur, wie beispielsweise einen zweiten Gipfel; zu viele führen zu einem unübersichtlichen Diagramm. Probieren Sie verschiedene Werte aus, bevor Sie sich für einen entscheiden.

Gruppenvergleich. Ordnen Sie einen Faktor zu, der aufgefüllt werden soll, und legen Sie die Position so fest, dass die Verteilungen lesbar bleiben:

ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) +
    geom_histogram(bins = 10, position = "identity", alpha = 0.5) +
    theme_classic()

Bei der Position „Identität“ und reduziertem Alpha-Wert überlappen sich die Histogramme, sodass Sie Formen direkt vergleichen können. Verwenden Sie die Position „Ausweichen“, wenn Sie die Bins lieber nebeneinander sehen möchten.

Dichte statt Anzahl. Wenn sich die Gruppen in ihrer Größe unterscheiden, sollte die Dichte so dargestellt werden, dass die Flächen vergleichbar sind, und anschließend eine geglättete Kurve darübergelegt werden:

ggplot(mtcars, aes(x = mpg)) +
    geom_histogram(aes(y = after_stat(density)), bins = 10,
        fill = "coral", alpha = 0.6) +
    geom_density(color = "steelblue", linewidth = 1) +
    theme_classic()

Balkendiagramm und Histogramm in R: Code Literaturhinweis

Ein Balkendiagramm eignet sich für eine kategoriale x-Achse, wobei die y-Achse entweder eine Anzahl oder eine zusammenfassende Statistik darstellt. Die folgende Tabelle listet den ggplot2-Aufruf für jede der oben genannten Varianten auf:

Ziel Code
Zu Zählen
ggplot(df, aes(x = factor(x1))) + geom_bar()
Zählen Sie mit unterschiedlicher Füllfarbe
ggplot(df, aes(x = factor(x1), fill = factor(x1))) + geom_bar()
Zählen Sie mit Gruppen, gestapelt
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar()
Zählen Sie mit Gruppen nebeneinander
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = position_dodge())
Zählung mit Gruppen, gestapelt in %
ggplot(df, aes(x = factor(x1), fill = factor(x2))) + geom_bar(position = "fill")
Werte (zusammenfassende Statistik)
ggplot(df, aes(x = factor(x1), y = x2)) + geom_bar(stat = "identity")
Histogramm einer stetigen Variablen
ggplot(df, aes(x = x1)) + geom_histogram(bins = 30)

Häufig gestellte Fragen

Verwenden Sie ein Histogramm, wenn die Variable auf der x-Achse stetig ist und Sie deren Verteilung darstellen möchten. Verwenden Sie ein Balkendiagramm, wenn die x-Achse verschiedene Kategorien enthält und Sie diese vergleichen möchten.

Innerhalb von `aes()` ordnet `fill` einer Variable eine Farbe zu, sodass jede Gruppe ihren eigenen Farbton erhält. Außerhalb von `aes()`, innerhalb von `geom_bar()`, ist `fill` ein fester Wert, der auf jeden Balken angewendet wird.

Es gibt keine allgemeingültige Antwort. Beginnen Sie mit der Quadratwurzel der Anzahl der Beobachtungen und passen Sie diese dann an. Zu wenige Intervalle verdecken Strukturen wie einen zweiten Gipfel, zu viele führen zu einem verrauschten, spitzen Diagramm.

Histogramme sind der Standard-Erstschritt bei der explorativen Datenanalyse für KI-Projekte. Sie decken Schiefe, Ausreißer und Klassenungleichgewichte auf, bevor ein Modell trainiert wird. Balkendiagramme fassen anschließend die Merkmalswichtigkeit und die Häufigkeiten der Kategorien zusammen.

Ja. KI-Assistenten können ggplot2-Layer anhand einer einfachen Diagrammbeschreibung erstellen und Fehler wie ein fehlendes `stat`-Argument erklären. Führen Sie den generierten Code immer mit Ihren eigenen Daten aus, um die Darstellung zu überprüfen.ping ist richtig.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: