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.

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.
- Die erste Funktion zรคhlt die Anzahl der Vorkommen in jeder Gruppe.
- 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:
Hinweis: Stellen Sie sicher, dass Sie die Variablen in einen Faktor umwandeln, da R die Variablen sonst als numerisch behandelt. Siehe das Beispiel unten.
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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:
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) |













