So erstellen sie ein lollipop-diagramm in r


Ähnlich wie ein Balkendiagramm eignet sich ein Lollipop-Diagramm zum Vergleich quantitativer Werte einer kategorialen Variablen. Anstelle von Balken verwendet ein Lollipop-Diagramm Linien mit Kreisen am Ende, um quantitative Werte darzustellen.

Ein Lollipop-Diagramm ist eine großartige Möglichkeit, mehrere Kategorien zu vergleichen und gleichzeitig den Farbanteil im Diagramm zu minimieren und die Aufmerksamkeit des Lesers auf die tatsächlichen Werte im Diagramm zu lenken, im Gegensatz zu den Linien oder anderen Grafiken im Diagramm. Viele Menschen empfinden das Lutscherbrett auch als ästhetisch ansprechend.

In diesem Tutorial gehen wir die Schritte durch, die zum Erstellen des folgenden Lollipop-Diagramms erforderlich sind:

Beispiel: Lollipop-Diagramm in R

Für dieses Beispiel verwenden wir den in mtcars integrierten R-Datensatz:

 #view first six rows of mtcars
head(mtcars)

Ein einfaches Lollipop-Diagramm

Der folgende Code veranschaulicht, wie   um ein Lollipop-Diagramm zu erstellen, um die mpg (Meilen pro Gallone) jedes der 32 Autos im Datensatz zu vergleichen.

Die Autonamen werden in den Zeilennamen des Datensatzes definiert, daher erstellen wir zunächst eine neue Spalte im Datensatz, die diese Zeilennamen enthält.

Als nächstes laden wir die ggplot2- Bibliothek, die wir zum Erstellen des Lollipop-Diagramms verwenden werden.

Mit ggplot2 verwenden wir geom_segment , um die Linien auf dem Plot zu erstellen. Wir legen die Start- und End-x-Werte auf 0 bzw. mpg fest. Wir legen die Anfangs- und End-y-Werte als char fest:

 #create new column for car names
mtcars$car <- row.names(mtcars)

#load ggplot2 library
library(ggplot2)

#create lollipop chart
ggplot(mtcars, aes(x = mpg, y = car)) +
        geom_segment(aes(x = 0, y = car, xend = mpg, yend = car)) +
        geom_point()

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)

Anstatt die Beschriftungen am Ende jeder Zeile zu platzieren, könnten 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 )

Vergleichen Sie Werte mit einem Durchschnitt

Wir können auch ein Lollipop-Diagramm verwenden, um Werte mit einer bestimmten Zahl zu vergleichen. Beispielsweise können wir den durchschnittlichen MPG- Wert im Datensatz ermitteln und dann die MPG jedes Autos mit dem Durchschnitt vergleichen.

Der folgende Code verwendet die dplyr- Bibliothek, um den durchschnittlichen MPG- Wert zu ermitteln und dann die Autos in aufsteigender MPG- Reihenfolge anzuordnen:

 #load library dplyr
library(dplyr)

#find mean value of mpg and arrange cars in order by mpg descending
mtcars_new <- mtcars %>%
                arrange(mpg) %>%
                mutate(mean_mpg = mean(mpg),
                       flag = ifelse(mpg - mean_mpg > 0, TRUE, FALSE),
                       car = factor(car, levels = .$car))

#view first six rows of mtcars_new
head(mtcars_new)

Dann erstellt der folgende Code das Lollipop-Diagramm, indem er die Farbe des Kreises auf den Flag- Wert (in diesem Fall TRUE oder FALSE) und den Start-x-Wert für jedes Auto auf den durchschnittlichen MPG- Wert setzt.

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

Mithilfe dieser Art von Farbpalette können wir leicht feststellen, welche Autos einen niedrigeren oder höheren MPG-Wert als der Durchschnitt des Datensatzes haben.

Standardmäßig verwendet R Blau und Rot als Diagrammfarben. Mit dem Argument „scale_color_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_color_manual(values = c("purple", "blue"))

Ändern Sie die Diagrammästhetik

Schließlich können wir die umfassenden Möglichkeiten von ggplot2 nutzen, um die Ästhetik des Diagramms weiter zu modifizieren 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))

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert