Achsen in R plot() bearbeiten und anpassen

von | Aug 4, 2021 | R, R-Diagramme

Hat man ein beliebiges Diagramm in R mit der plot()-Funktion erstellt, kann man die Achsen entsprechend nach den eigenen Bedürfnissen anpassen. In diesem Beitrag zeige ich, wie.

Achsen beschriften

Die Befehle xlab und ylab erlauben die Standardbeschriftung zu ersetzen. Normalerweise wird der Name der Variable an die jeweilige Achse gesetzt. Bei kryptischen Variablennamen, die zudem aus einem Dataframe gezogen werden, kann das schnell zu lustigen Achsenbezeichnungen führen. In meinem Streudiagramm benenne ich die Achsen direkt mit xlab=“x-Achse“ und ylab=“y-Achse“. Diese Argumente werden in die plot()-Funktion mit Komma angehängt.


plot(x,y,xlab="x-Achse", ylab="y-Achse")

Achsenbeschriftung rplot()

Zwischenräume zwischen Nullpunkt und Achsen entfernen

R lässt in mittels der plot()-Funktion erstellten Diagramme zu allen Seiten einen kleinen Platz. Das ist an sich eine gute Möglichkeit, damit die Diagramme etwas „luftiger“ gestaltet sind. Allerdings kann es sein, dass gerade bei eingefügten Linien, die mit den Achsen einen Schnittpunkt haben, diese vermeintlich falsch sind.
Wie man hier erkennen kann, hat die Gerade den Achsenabschnitt 2 und die Steigung 0,5. Allerdings setzt sie knapp unter der 2 auf der y-Achse an. Die Illusion ist also perfekt.

 

Dieses Problem kann man mit dem sog. xaxs- bzw. yaxs-Argument lösen. Standardmäßig wird es mit „r“, also regular so wie oben stehend gezeichnet. Möchte man die Zwischenräume entfernen, verwendet man xaxs=“i“ bzw yaxs=“i“. Das i steht hierbei für „internal“. Die Achsen werden nach innen gerückt.


plot(x,y, xaxs="i", yaxs="i")

rplot() innerer Rahmen

Achsen komplett entfernen

Möchte man die Achsen entfernen, hilft das Argument „axes=FALSE“. Sollen auch die Achsenbezeichnungen entfernt werden, kann man mit den oben gezeigten xlabs- und ylabs-Funktionen einfach leere Bezeichner einfügen: xlabs=““. Das Ergebnis ist in meinem Fall lediglich eine Punktewolke ohne sämtliche Achsen und Bezeichner.


plot(x,y, axes = FALSE, xlab="", ylab="")

rplot() achsen entfernen

Zweite x-Achse und y-Achse hinzufügen

Mitunter kann es notwendig sein, auch oben und rechts Achsen einzuzeichnen, sozusagen eine zweite y-Achse und eine zweite x-Achse. Dazu gibt es die axis()-Funktion. Sie kann nachträglich alle 4 möglichen Achsen einzeichnen. Dazu muss zunächst gesagt werden, welche Achse man zeichnen möchte. Da es 4 Achsen gibt, stehen die Zahlen 1-4 für diese:

  • 1: untere x-Achse
  • 2: linke y-Achse
  • 3: obere x-Achse
  • 4: rechte y-Achse

Zusätzlich kann festgelegt werden, dass nur ein bestimmter Bereich der Achse mit Wertbeschriftungen versehen wird. Hierfür wird das at=seq()-Argument verwendet. Hier legt man Start- und Endpunkt der Wertbeschriftungen fest. Gleichzeitig kann man zusätzlich noch die Abstände eintragen, also ob in 1er, 2er, 5er oder 1000er Schritten dies geschehen soll.

Möchte ich also eine zweite x-Achse einfügen, die nur von 2 bis 5 in 1er Schritten Wertbeschriftungen hat, verwende ich folgenden Befehl – nach der Erstellung des Plots. Zusätzlich füge ich eine zweite y-Achse ein, die nur von 2 bis 8 in 2er Schritten Wertbeschriftungen besitzt.


plot(x,y)
#2. x-Achse
axis(3, at=seq(2,5, by=1))
#2. y-Achse
axis(4, at=seq(2,8, by=2))

Achsenwertebeschriftung ändern

y-Achse und x-Achse neu definieren

Es kann vorkommen, dass man die eigentliche y-Achse und x-Achse hinsichtlich der Wertbeschriftungen anpassen möchte. Hierzu muss man zwei schon gezeigte Befehle kombinieren. Zunächst muss man den Plot ohne die Achsen erstellen (axes = FALSE) und nachträglich mit der eben gezeigten axis()-Funktion diese wieder hinzufügen.
Im at=seq()-Argument kann man natürlich auch nur gewisse Bereiche angeben, z.B. eben auf der x-Achse nur Werte von 2 bis 5 in 1er Schritten und auf der y-Achse nur Werte von 2 bis 8 in 2er Schritten.


plot(x,y, axes=FALSE)
axis(1, at=seq(2,5, by=1))
axis(2, at=seq(2,8, by=2))

Hier sieht man, dass dies aber mitunter nicht schön ist und man lieber durchgezogenen Achsen haben möchte. Dazu gibt es die box()-Funktion.


plot(x,y, axes=FALSE)
axis(1, at=seq(2,5, by=1))
axis(2, at=seq(2,8, by=2))
box()

Diagramm ohne Rahmen

Möchte man keinen Rahmen um das Diagramm, wie dies R standardmäßig darstellt, kann man die Achsen entfernen und erneut einfügen. Letztlich eine kleine Fingerübung die bereits gezeigte Argumente und Funktionen kombiniert. Wichtig ist hier lediglich, dass die Sequenz in at=seq() bei 0 beginnt und beim Maximalwert bzw. einen beliebig größeren Wert endet.


plot(x,y, axes=FALSE)
axis(1, at=seq(0,10, by=1))
axis(2, at=seq(0,20, by=1))

Rplot() ohne Rahmen

Achsenbeschriftung drehen / Ausrichtung ändern

Standardmäßig werden an vertikalen Achsen die Wertbeschriftungen auch vertikal angebracht, stehen also dann in rechtem Winkel zur typischen Leserichtung. Das kann mit dem Argument las in der axis()-Funktion angepasst werden.

  • 0: immer parallel zur Achse (Standard)
  • 1: immer horizontal
  • 2: immer rechtwinklig zur Achse
  • 3: immer vertikal

Für die x-Achse braucht man sich typischerweise keine Sorgen zu machen. Lediglich die Wertbeschriftung der y-Achse muss gedreht werden. Dazu kann man pauschal las=1 verwenden, oder, falls man die Achsen separat zeichnet, las=2 (rechtwinklig zur y-Achse -> horizontal) verwenden.


plot(x,y, las=1)

Beschriftung Diagramm R ändern

Achsen und Wertbeschriftungen einfärben

Einfärben kann man die Achsen problemlos. Zu den verschiedenen Farben gibt es einen separaten Beitrag. Man setzt lediglich in die axis()-Funktion ein Argument wie col=“red“.
Die Wertbeschriftungen werden mit col.axis-Argument eingefärbt.


plot(x,y)
axis(1, at=seq(0,20, by=1), col.axis="darkgreen", col ="steelblue")

Rplot Achsen einfärben

Achsenbreite und Achsenlinientyp ändern

Die Breite der Achsenlinie kann mit dem Argument lwd geändert werden. 1 ist der Standard, ich zeige unten lwd=3.
Möchte man auch noch den Achsenlinientyp ändern (eher nicht zu empfehlen), kann man mit dem lty-Argument gestrichelte, gepunktete usw. Linien erzeugen.
Linientypen:

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

plot(x,y, axes=FALSE)
axis(1, at=seq(0,10, by=1), lwd=3, lty=3)
axis(2, at=seq(0,20, by=1), lwd=2, lty=6)

Achsendicke Linientyp rplot()

 

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