So erstellen Sie ein Lollipop-Diagramm in R

Von Fabian
Kategorie: R
Lesezeit: 4 Minuten

Ähnlich wie bei einem Balkendiagramm ist ein Lollipop-Diagramm nützlich, um die quantitativen Werte einer kategorialen Variablen zu vergleichen. Anstatt Balken zu verwenden, verwendet ein Lollipop-Diagramm Linien mit Kreisen am Ende, um die quantitativen Werte darzustellen.

Ein Lollipop-Diagramm ist eine hervorragende Möglichkeit, mehrere Kategorien zu vergleichen, während die Farbmenge im Diagramm minimal gehalten wird und der Leser auf die tatsächlichen Werte im Diagramm aufmerksam gemacht wird, im Gegensatz zu den Linien oder anderen Grafiken im Diagramm. Viele Leute halten das Lollipop-Diagramm auch für ästhetisch ansprechend.

In diesem Tutorial werden wir die notwendigen Schritte ausführen, um das folgende Lollipop-Diagramm zu erstellen:

Lollipop-Diagramm mit ggplot2 in R

Beispiel: Lollipop-Diagramm in R

In diesem Beispiel verwenden wir den integrierten R-Datensatz mtcars:

#Ersten sechs Reihen von mtcars anzeigen
head(mtcars)

mtcars-Datensatz in R

Ein grundlegendes Lollipop-Diagramm

Der folgende Code zeigt, wie man ein Lollipop-Diagramm erstellt, um die mpg (Meilen pro Gallone) für jedes der 32 Autos im Datensatz zu vergleichen.

Die Namen der Autos werden in den Zeilennamen des Datensatzes definiert. Daher erstellen wir zuerst eine neue Spalte im Datensatz, die diese Zeilennamen enthält.

Als nächstes laden wir die Bibliothek ggplot2, mit der wir das Lollipop-Diagramm erstellen.

Mit ggplot2 verwenden wir geom_segment, um die Linien im Plot zu erstellen. Wir definieren die Start- und End-x-Werte als 0 und mpg. Wir definieren die Start- und End-y-Werte als car :

#Erstellen Sie eine neue Spalte für Fahrzeugnamen
mtcars$car <- row.names(mtcars)

#Laden der ggplot2 Bibliothek
library(ggplot2)
#Lollipop-Diagramm erstellen
ggplot(mtcars, aes(x = mpg, y = car)) +
       geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
       geom_point()

Lollipop-Diagramm in R mit ggplot2

Etiketten hinzufügen

Wir können dem Diagramm auch Beschriftungen hinzufügen, indem wir die Argumente label und geom_text verwenden :

ggplot(mtcars, aes(x = mpg, y = car, label = mpg)) +
       geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
       geom_point() +
       geom_text(nudge_x = 1.5)

Lutschertabelle mit Beschriftungen in R

Anstatt die Beschriftungen am Ende jeder Zeile zu platzieren, können wir sie auch innerhalb der Kreise selbst platzieren, indem wir die Kreise vergrößern und die Schriftfarbe der Beschriftung in Weiß ändern:

ggplot(mtcars, aes(x = mpg, y = car, label = mpg)) +
       geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
       geom_point(size = 7) +
       geom_text(color = 'white', size = 2)

Lutschertabelle mit Beschriftungen innerhalb der Kreise in R

Werte mit einem Durchschnitt vergleichen

Wir können auch ein Lollipop-Diagramm verwenden, um Werte mit einer bestimmten Zahl zu vergleichen. Zum Beispiel können wir den Durchschnittswert für mpg im Datensatz finden und dann den mpg jedes Autos mit dem Durchschnitt vergleichen.

Der folgende Code verwendet die Bibliothek dplyr, um den Durchschnittswert für mpg zu ermitteln und die Autos in aufsteigender Reihenfolge nach mpg zu ordnen:

#Laden der dplyr Bibliothek
library(dplyr)
#Finden Sie den Mittelwert von mpg und ordnen Sie die Autos in der Reihenfolge nach absteigendem mpg an
mtcars_new %
                arrange(mpg) %>%
                mutate(mean_mpg = mean(mpg),
                       flag = ifelse(mpg - mean_mpg > 0, TRUE, FALSE),
                       car = factor(car, levels = .$car))

# Die ersten sechs Zeilen von mtcars_new anzeigen
head(mtcars_new)

Verwenden von dplyr zum Anordnen des mtcars-Datensatzes in R

Als nächstes erstellt der folgende Code das Lollipop-Diagramm, indem die Farbe des Kreises so definiert wird, dass sie dem Wert der Flagge (in diesem Fall WAHR oder FALSCH) entspricht und der Start-x-Wert für jedes Auto dem Durchschnittswert von mpg entspricht.

ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
       geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car)) +
       geom_point()

Bestelltes Lutscher-Diagramm in R mit ggplot2

Mithilfe dieser Art von Farbschema können wir leicht feststellen, welche Autos eine mpg haben, die unter und über dem Durchschnitt des Datensatzes liegt.

Standardmäßig verwendet R Blau und Rot als Farben für das Diagramm. Mit dem Argument scale_colour_manual können wir jedoch beliebige Farben verwenden:

ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
       geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car)) +
       geom_point() +
       scale_colour_manual(values = c("purple", "blue"))

Lutschertabelle mit benutzerdefinierten Farben in R

Ändern der Ästhetik des Diagramms

Schließlich können wir die umfassenden Funktionen von ggplot2 nutzen, um die Ästhetik des Diagramms weiter zu ändern und ein professionell aussehendes Endprodukt zu erstellen:

ggplot(mtcars_new, aes(x = mpg, y = car, color = flag)) +
       geom_segment(aes(x = mean_mpg, y = car, xend = mpg, yend = car), color = "grey") +
       geom_point() +
       annotate("text", x = 27, y = 20, label = "Above Average", color = "#00BFC4", size = 3, hjust = -0.1, vjust = .75) +
       annotate("text", x = 27, y = 17, label = "Below Average", color = "#F8766D", size = 3, hjust = -0.1, vjust = -.1) +
       geom_segment(aes(x = 26.5, xend = 26.5, y = 19, yend = 23),
       arrow = arrow(length = unit(0.2,"cm")), color = "#00BFC4") +
       geom_segment(aes(x = 26.5, xend = 26.5 , y = 18, yend = 14),
       arrow = arrow(length = unit(0.2,"cm")), color = "#F8766D") +
       labs(title = "Miles per Gallon by Car") +
       theme_minimal() +
       theme(axis.title = element_blank(),
             panel.grid.minor = element_blank(),
             legend.position = "none",
             text = element_text(family = "Georgia"),
             axis.text.y = element_text(size = 8),
             plot.title = element_text(size = 20, margin = margin(b = 10), hjust = 0),
             plot.subtitle = element_text(size = 12, color = "darkslategrey", margin = margin(b = 25, l = -25)),
             plot.caption = element_text(size = 8, margin = margin(t = 10), color = "grey70", hjust = 0))

Lollipop-Diagramm mit ggplot2 in R

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: