Medienbildung für Kinder + Jugendliche - ein sicherer Umgang mit Medien ist heutzutage wichtiger denn je. Das Bürgerradio in Jena tut dies mit dem Projekt "Rabatz" seit 20 Jahren sehr erfolgreich - nun streicht die Stadt die Finanzierung. Hilf mit, diese wichtige Tätigkeit zu erhalten.

Kreisdiagramm in R erstellen

von | Nov 5, 2020 | R, R-Diagramme


Mit einem Kreisdiagramm (auch Kuchendiagramm oder Tortendiagramm) kann man für nominal skalierte Variablen die relativen Häufigkeiten der Ausprägungen zur Gesamtzahl darstellen. Kurz gesagt, z.B. die prozentualen Stimmanteile der jeweiligen Parteien bei einer Wahl. Hierzu kann man in R die pie()-Funktion verwenden.

Kreisdiagramm R

Zunächst muss man Daten eingelesen haben. Alternativ könnt ihr sie aus dem Data-frame mit dem attach-Befehl herauslösen. Ich zeige hier die Variante ohne Zugriff auf den Data-frame, also mit attachten-Daten. Ich zeige Schritt für Schritt den Aufbau und fange zunächst mit der unformatierten Ausgangslösung an.

Zum Installieren von R bzw. RStudio empfehle ich diesen Artikel. Für augenfreundliches Arbeiten empfehle ich euch diesen Artikel sehr. Schließlich wird die Frage nach dem Import von Daten in R in diesem Artikel beantwortet.

Im Beispiel stelle ich, wie schon oben angedeutet, die prozentualen Häufigkeiten der Parteien einer Wahl dar.

 

Videotutorial zum Erstellen eines Kreisdiagramms in R

Dieses Video ansehen auf YouTube.

 

Das Kreisdiagramm erstellen

Ein 1. Entwurf

Als erstes wird mit dem pie()-Befehl eine vorher zu erstellende Häufigkeitstabelle in einen Kreis gepackt. Die Häufigkeitstabelle wird mit dem Befehl table() erstellt und hat folgendes Ergebnis:


Wahlstimme
  CDU   FDP Grüne Linke   SPD 
   11    11     8    13     8

Damit ist zunächst klar, dass nicht Prozentwerte, sondern absolute Häufigkeiten abgetragen werden:


pie(table(Wahlstimme))

Das erste Ergebnis ist erstmal ernüchternd. Es wird nachfolgend noch entsprechend angepasst.

Kreisdiagramm R

 

Relative Häufigkeiten berechnen

Relative Häufigkeiten, also Prozentwerte erhält man durch einfaches Teilen der absoluten Häufigkeiten durch die Gesamtzahl – hier Stimmabgaben. Ich könnte diese zwar manuell zählen (es sind im Beispiel 51), das ist aber wenig dynamisch. Daher summiere ich die Anzahl aller Stimmen mit dem sum()-Befehl, den ich in die Häufigkeitstabelle einbaue.

Jeder Eintrag in der Häufigkeitstabelle wird folglich durch die Gesamtzahl geteilt. Zu guter letzt möchte ich dies mit 100 multiplizieren, um einfach zu lesende Prozentwerte zu erhalten.

Im Code sieht das dann wie folgt aus:


(table(Wahlstimme)/sum(table(Wahlstimme)))*100

 

Das Ergebnis ist Folgendes:


Wahlstimme
     CDU      FDP    Grüne    Linke      SPD 
21.56863 21.56863 15.68627 25.49020 15.68627

Diese Werte möchte ich nun aber noch auf zwei Dezimalstellen gerundet speichern, damit ich sie für die spätere Beschriftung des Diagramms wieder verwenden kann. Ich speichere sie in der Variable „prozent“ und runde mit der round()-Funktion auf 2 Nachkommastellen.


prozent <- round((table(Wahlstimme)/sum(table(Wahlstimme)))*100,2)

Die Variable kann man sich ausgeben lassen und erhält Folgendes:


Wahlstimme
  CDU   FDP Grüne Linke   SPD 
21.57 21.57 15.69 25.49 15.69

 

Beschriftung erstellen

Damit man beim Lesen des Kreisdiagramms weiß, welche Partei welchen Anteil hat, ist es notwendig eine Beschriftung zu erstellen. Hierzu definiert man eine Variable mit den jeweiligen Ausprägungen. Im Beispiel sind es die fünf Partien CDU, FDP, Grüne, Linke und SPD. Die Beschriftung erfolgt immer aufsteigend, egal ob es numerische Variablen sind oder Wörter (sog. character), weil die Häufigkeitstabelle so aufgebaut ist. Im Zweifel lässt man sich also immer eine Häufigkeitstabelle ausgeben, um die Reihenfolge richtig zu erstellen. Ich verknüpfe nun also lediglich die fünf Parteinamen miteinander in einer neuen Variable.


partei <- c("CDU", "FDP", "Grüne", "Linke", "SPD")

 

Im letzten Schritt für die Beschriftung füge ich die Prozentwerte von oben und die Parteinamen zusammen. Dies funktioniert mit dem paste()-Befehl. Ich erstelle eine neue Variable, die sich aus der Zusammensetzung der Variable "partei" (Parteinamen), "prozent" (prozentuale Häufigkeiten), dem Prozentzeichen (%) sowie einem Leerzeichen (" ") zusammensetzt.


beschriftung <- paste(partei, prozent, "%", sep=" ")

 

Lässt man sich nun die Variable "beschriftung" testweise ausgeben erhält man die jeweilige Partei sowie ihr jeweiliges Stimmergebnis in %:


"CDU 21.57 %"   "FDP 21.57 %"   "Grüne 15.69 %" "Linke 25.49 %" "SPD 15.69 %" 

 

Kreisdiagramm und Beschriftung zusammenführen

Hierzu ist es lediglich notwendig, die bisher gemachten Befehle zu kombinieren.

  1. Man beginnt wie gehabt mit dem pie()-Befehl, in dem man die Häufigkeitstabelle der Wahlstimme mit dem table()-Befehl als Datengrundlage definiert.
  2. Als Nächstes wird mit dem labels-Argument innerhalb von pie() die Beschriftung festgelegt: labels = beschriftung
  3. Mit main="Stimmanteile" vergebe ich einen Diagrammtitel.
  4. Mit col = c() vergebe ich nun noch aussagekräftige Farben. Auch sie sind in Anführungszeichen und mit Komma getrennt anzugeben. Achtung, die Reihenfolge ist analog zur Beschriftung, die sich aus der Häufigkeitstabelle ablesen lässt.

 

Der Code sieht wie folgt aus:


prozent <- round((table(Wahlstimme)/sum(table(Wahlstimme)))*100,2)
partei <- c("CDU", "FDP", "Grüne", "Linke", "SPD")
beschriftung <- paste(partei, prozent, "%", sep=" ")
pie(table(Wahlstimme), labels = beschriftung, main = "Stimmanteile", 
    col = c("black", "yellow", "green", "purple", "red"))

Im Ergebnis erhält man folgendes Kreisdiagramm:

Kreisdiagramm R

 

 

Hat dir der Beitrag geholfen?

Dann würde ich mich über eine kleine Spende freuen, die es mir erlaubt, weiterhin kostenfreie Inhalte zu veröffentlichen.

Vielen Dank und viel Erfolg!

Über mich

Björn Walther

Excel- und SPSS-Experte

YouTube-Kanal

Excel Online-Kurs

YouTube-Kanal

Medienbildung für Kinder + Jugendliche - ein sicherer Umgang mit Medien ist heutzutage wichtiger denn je. Das Bürgerradio in Jena tut dies mit dem Projekt "Rabatz" seit 20 Jahren sehr erfolgreich - nun streicht die Stadt die Finanzierung. Hilf mit, diese wichtige Tätigkeit zu erhalten.