Streudiagramm/Punktdiagramm in R mit ggplot erstellen

von | 27 Feb, 2024 | Diagramm, R


Dieser Beitrag zeigt anhand von Zufallsdaten die Erstellung eines Punktdiagramms bzw. Streudiagramms mit ggplot in R. Hiermit könnt ihr zwei Merkmale zueinander in Beziehung setzen. Wie dies in R lediglich mit Bordmitteln (plot()-Funktion) funktioniert, hatte ich in diesem Beitrag gezeigt.

Für augenfreundliches Arbeiten empfehle ich euch diesen Artikel sehr.
 

0 ggplot installieren

Nach dem Einlesen von Daten muss, sofern noch nicht geschehen, ggplot (offizieller Name des Pakets: ggplot2) installiert werden. Hierzu verwenden wir die install.packages()-Funktion. Nach der Installation erfolgt das Laden über die library()-Funktion:


install.packages("ggplot2")
library(ggplot2)

 

1 Diagramm definieren

Jedes Diagramm mit ggplot beginnt mit dem Befehl ggplot().

  • Hierin wird als Erstes die Datenquelle, der Data-Frame, definiert. In meinem Fall schlicht df.
  • Als zweites folgt die aes()-Funktion. In ihr werden die aesthetics, also das grundlegende Aussehen des Diagramms definiert.
  • Innerhalb der aes()-Funktion erfolgt die Defition der x-Variable und y-Variable, jeweils mit z.B. x=Einkommen bzw. y=Zufriedenheit.

ggplot(df, aes(x=Einkommen, y=Zufriedenheit)) 

Hierfür erhält man ein leeres Diagramm, dass bereits die Wertebereiche abdeckt, die im Datensatz für die jeweiligen beiden Variablen vorkommen.
leeres diagramm ggplot
 

2 Datenpunkte eintragen

Um Datenpunkte einzutragen, wird, da wir ein Streudiagramm/Punktdiagramm erstellen wollen, die Funktion geom_point() an ggplot() angehängt. Dies geschieht mit einem einfachen + und der Übersicht wegen auch mithilfe eines Zeilenumbruchs.


ggplot(df, aes(x=Einkommen, y=Zufriedenheit)) + 
  geom_point()

Hierdurch werden alle Beobachtungen, für die jeweils eine x-Variable und y-Variable vorliegen, eingetragen.
Streudiagramm ggplot
 

3 Datenpunkte formatieren

3.1 Größe der Datenpunkte ändern

Die Größe der Datenpunkte in eurem Punktdiagramm könnt ihr mit dem Argument “size” innerhalb von geom_point() ändern. Standardmäßig hat es den Wert 1.5. Mit z.B. size=2 vergrößert ihr die Punkte etwas. Den Wert könnt ihr beliebig steigern, ihr werdet aber schnell merken, dass es nur wenig Sinn macht, eine große Zahl zu wählen. In meinem Falle habe ich den Code mit size=3 modifiziert.


ggplot(df, aes(x=Einkommen, y=Zufriedenheit)) + 
  geom_point(size=3)

Streudiagramm ggplot Datenpunkte vergrößern 

3.2 Form der Datenpunkte ändern

Das standardmäßige Aussehen von Datenpunkten in einem mit ggplot erstelltem Streudiagramm in R sind schwarz ausgefüllte Kreise. Es gibt 25 Vorlagen, die das Aussehen der Datenpunkte im Streudiagramm ändern. Eine Übersicht sehr ihr hier:

pch Datenpunkte Streudiagramm R

Ihr verwendet das shape-Argument innerhalb der geom_point()-Funktion, um das Aussehen zu ändern. Wollt ihr beispielsweise ein ausgefülltes Dreieck haben, verwendet ihr shape=17.


ggplot(df, aes(x=Einkommen, y=Zufriedenheit)) + 
  geom_point(size=3, shape=17)

Streudiagramm ggplot Shape ändern
 

3.3 Farbe der Datenpunkte ändern

Um nicht nur schwarze Datenpunkte zu haben, sondern eine beliebige Farbe zur Füllung (oder den Rahmen) zu definieren, kann das col-Argument innerhalb von geom_point() genutzt werden. Beispielsweise hätte ich gerne hellblaue statt schwarze Dreiecke:


ggplot(df, aes(x=Einkommen, y=Zufriedenheit)) + 
  geom_point(size=3, shape=17, col="steelblue")

Streudiagramm ggplot Datenpunkte einfärben

4 Achsen formatieren

4.1 Achsenlimits anpassen

R verwendet standardmäßig als obere und untere Grenzen für die beiden Achsen den Wertebereich der Variablen. Möchte man dies ändern, also z.B. das Einkommen auf der x-Achse ab 0 abtragen und die Zufriedenheit auf der y-Achse ebenfalls, helfen die Befehle scale_x_continous() und scale_y_continous(), welche per + an geom_point() angehängt werden.
In den Funktionen muss jeweils noch das limits-Argument angegeben werden. Hierin werden die Grenzen definiert. limits=c(0,150) für die Zufriedenheit würde bedeuten, dass die y-Achse von 0 bis 150 gehen muss. Für die y-Achse definiere ich den Bereich 0-6000:


ggplot(df, aes(x=Einkommen, y=Zufriedenheit)) + 
  geom_point(size=3, shape=17, col="steelblue")+
  scale_y_continuous(limits=c(0,150))+
  scale_x_continuous(limits=c(0,6000))

Streudiagramm ggplot Achsenlimits anpassen

4.2 Achsenabschnitte anpassen

Um Wertebeschriftungen der Achsen einzufügen (manchmal auch als Hauptstriche bezeichnet), beispielsweise alle 1000 auf der x-Achse oder alle 50 auf der y-Achse, wird das breaks-Argument verwendet.


ggplot(df, aes(x=Einkommen, y=Zufriedenheit)) + 
  geom_point(size=3, shape=17, col="steelblue")+
  scale_y_continuous(limits=c(0,150), breaks = c(0,50,100,150))+
  scale_x_continuous(limits=c(0,6000), breaks=c(0,1000,2000,3000,4000,5000,6000))

Streudiagramm ggplot Datenbeschriftung Achse
 

5 Achsenbezeichnung ändern

Schließlich kann, wenn der Variablenname nicht wie in meinem Beispiel direkt perfekt formuliert ist, auch die Achsenbezeichnung geändert werden. Hierzu verwendet man den labs()-Befehl, welcher einfach per + an den bisherigen Code angehängt wird. Mit x=”Haushaltseinkommen” und y=”ISSP” würden die entsprechenden Bezeichnungen geändert werden.
Hinweis: ISSP ist die Happiness und Satisfaction Scale und hat einen gänzlich anderen Wertebereich und wurde hier nur exemplarisch verwendet.


ggplot(df, aes(x=Einkommen, y=Zufriedenheit)) + 
  geom_point(size=3, shape=17, col="steelblue")+
  scale_y_continuous(limits=c(0,150), breaks = c(0,50,100,150))+
  scale_x_continuous(limits=c(0,6000), breaks=c(0,1000,2000,3000,4000,5000,6000))+
  labs(x="Haushaltseinkommen", y="ISSP")

Streudiagramm ggplot Achsenbezeichnung ändern
 

6 Gruppenweise Darstellung

6.1 Einfache farbliche Unterteilung

Hat man im Datensatz eine Gruppenvariable und möchte die Datenpunkte je Gruppe unterschiedlich dargestellt haben, wird innerhalb von ggplot() noch das color-Argument definiert. Hierzu wird schlicht color=Geschlecht geschrieben, wenn nach Geschlecht getrennt werden soll.


ggplot(df, aes(x=Einkommen, y=Zufriedenheit, color=Geschlecht)) + 
  geom_point(size=3, shape=17)

Streudiagramm nach Gruppen ggplot

Hinweis: die Gruppenvariable sollte als Faktor definiert sein. Wie man eine kategoriale Variable als Faktorvariable definiert und den Ausprägungen Werte zuweist, zeigt dieser Beitrag.

 

6.2 Unterteilung nach Farbe und Form

Wenn zusätzlich noch eine andere Farbe und ein anderes Datenpunkdesign pro Geschlecht verwendet werden soll, benötigt man allerdings ein etwas anderes Vorgehen.

  • Zuerst muss innerhalb von aes() noch shape=Geschlecht mit angegeben werden, um später die Shapes je nach Geschlecht anders zuzuweisen.
  • Weiterhin wird der Befehl scale_color_manual() benötigt, damit Farben je Geschlecht zugewiesen werden können. Hierin wird mit values=c(“darkred”, “darkgreen”) der Faktorstufe 1 die Farbe dunkelrot und der Faktorstufe 2 die Farbe dunkelgrün zugewiesen.
  • Im Befehl scale_shape_manual() werden ebenfalls mit values= die Formen zugewiesen. Z.B. values=c(16,15) für den ausgefüllten Kreis für die Faktorstufe 1 und das ausgefüllte Viereck für die Faktorstufe 2.

ggplot(df, aes(x=Einkommen, y=Zufriedenheit, color=Geschlecht, shape=Geschlecht)) + 
  geom_point(size=3)+
  scale_color_manual(values = c("darkred", "darkgreen"))+
  scale_shape_manual(values=c(16,15))

Streudiagramm ggplot Gruppen 

7 Videotutorial zum Erstellen eines Streudiagrammes in R mit ggplot

/
 

 

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.
Alternativ kannst du über meinen Amazon Affiliate-Link einkaufen – ohne Zusatzkosten.

Vielen Dank und viel Erfolg!

Über mich

Björn Walther

Ein 💚 für Statistik & Datenanalyse

Excel Online-Kurs

YouTube-Kanal

Inhalt