Geraden in R in ggplot zeichnen

von | Zuletzt bearbeitet am: Sep 29, 2022 | R, R-Diagramme


Je nach Diagramm und Anwendungsfall kann notwendig sein, in ein mit ggplot erstelltes Diagramm Geraden/Linien einzuzeichnen. Dieser Beitrag zeigt, wie horizontale und vertikale Geraden eingezeichnet werden, eine Gerade mit Achsenabschnitt und Steigung sowie eine Regressionsgerade eingezeichnet werden können. Letzteres ist nur sinnvoll im Kontext von Streudiagrammen.

1 Beispieldaten erstellen und Diagramm zeichnen

Wer Beispieldaten zur Orientierung braucht, kann diese übernehmen und ausführen. Das Diagramm wird im Objekt p gespeichert, damit ein übersichtlicheres Arbeiten möglich ist.


# Datenpunkte generieren 
x = c(0,1,2,3,4,4,5,6)
y = c(0,2,3,1,6,8,10,9)
 
# Data Frame erstellen
d <- as.data.frame(cbind(x,y))
 
# Streudiagramm erstellen
p <- ggplot (d, aes(x=x, y=y)) + 
 geom_point(size=2,  shape="circle filled", col="black", fill="steelblue") + 
 labs(x="x", y="y")+
 scale_y_continuous(breaks=c(0,2,4,6,8,10))

Das Ausgangsdiagramm sieht wie folgt aus:
Streudiagramm

 

2 Horizontale Gerade in ggplot einzeichnen

Eine Horizontale wird mit der Funktion geom_hline() eingezeichnet. Zusätzlich muss das Argument yintercept angegeben werden, um zu definieren, auf welcher Höhe der y-Achse die Linie verläuft.Ich zeichne eine Linie mit y=4 ein, die parallel zur x-Achse verläuft.


p + geom_hline(yintercept = 4)

Horizontale Linie ggplot

 

Die Linie kann man auch gestrichelt darstellen. Dazu nutzt man das Argument linetype:
Linientypen:

  • 1=solid (Standard)
  • 2=dashed
  • 3=dotted
  • 4=dotdash
  • 5=longdash
  • 6=twodash

Dazu zeichne ich diesmal bei y=7 eine parallele Gerade zur x-Achse ein und stelle sie gestrichelt dar.


p + geom_hline(yintercept = 7, linetype="dashed")

Horizontale Linie ggplot

 

3 Vertikale Gerade einzeichnen

Eine Vertikale wird mit der Funktion geom_vline(), allerdings mit dem Argument "xintercept" eingezogen. Hier ziehe ich eine Gerade ein, die bei x=3 parallel zur y-Achse verläuft.


p + geom_vline(xintercept = 3)

Vertikale Linie ggplot

 

4 Gerade mit Achsenabschnitt und Steigung einzeichnen

Eine Gerade mit Achsenabschnitt und Steigung kann in ggplot mit der Funktion geom_abline() eingefügt werden. Wir benötigen hierfür nun aber zwei Argumente. Zum einen den Achsenabschnitt mit dem Argument intercept und zum anderen die Steigung mit dem Argument slope.
Ich zeichne eine Gerade bei y=1,2 mit der Steigung von 1,5. Zusätzlich mache ich sie etwas dicker (size=2), färbe sie exemplarisch orange ein und stelle sie gepunkted ("dotted") dar. Weitere Farben gibt es hier in der Übersicht.


p + geom_abline(intercept = 1.2, slope = 1.5, size=2, 
                colour="orange", linetype="dotted")

Linie ggplot

 

5 Regressionsgerade einzeichnen

Dies funktioniert wie bereits erwähnt nur für Streudiagramme. Hierfür benötigt man lediglich die Funktion geom_smooth().

  • In das Argument formula werden Kriterium (abhängige Variable) und Prädiktor (unabhängige Variable) getrennt durch ~ eingesetzt.
  • Das Argument method = "lm" gibt an, dass es sich um eine lineare Regressionsgerade handeln soll.
  • Das Argument se = FALSE verhindert das zusätzliche Einzeichnen eines Konfidenzintervalls um die Regressionsgerade.
  • colour und linetype sind optional und stellen die Gerade hier als gestrichelt und in rot dar.

p + geom_smooth(method = "lm", formula = y~x, 
                se = FALSE, colour = "red", linetype = "dashed")

Regressionsgerade ggplot

 

6 Kombination mehrerer Geraden

Abschließend noch ein kurzer Überblick, wie man zwei oder mehr Gerade einzeichnet, beispielsweise, um einen Schnittpunkt zu erzeugen:


p + geom_hline(yintercept = 3, linetype="dashed") +
    geom_vline(xintercept = 2, linetype="dashed") +
    geom_smooth(method = "lm", formula = y~x, 
                se = FALSE, colour = "red", linetype = "dashed")

Geraden ggplot

 

7 Videotutorial

/

 

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