Grafik-Parameter in R zeitweise verändern

R ist eine Programmiersprache, mit deren Hilfe man Statistiken berechnen und die Ergebnisse grafisch darstellen kann. Dabei kann man auch mehrere solcher Grafiken in eine einzige Datei (z.B. PDF-Datei) speichern.

Die Ausgabegeräte („output device“, z.B. PDF-Datei) haben voreingestellte Werte für z.B. die Rahmenbreite, Textfarben, Textgrößen, usw.. Manchmal möchte man dabei für einen einzigen Plot die Standard-Parameter des Ausgabegerätes verändern(sie auch: Dokumentation zu par() und WikiBooks-Artikel zu par()). Für weitere Plots sollen dann wiederum die Standard-Parameter verwendet werden. Dazu kann man die Parameter vor der Veränderung zwischenspeichern und im Anschluss wieder einsetzen.

Im folgenden Beispiel werden drei einfache Grafiken in eine gemeinsame PDF-Datei geplottet. Im zweiten Plot werden die Ränder, sowie die Ausrichtung der Beschriftungen verändert. Im dritten Plot werden dann wieder die Standard-Parameter verwendet:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Ausgabegerät setzen (hier: PDF-Datei)
pdf("plots.pdf")
 
# Plot mit Standard-Parametern
plot(
    x = 1, y = 1
    , xlab = "X-Achsenbeschriftung"
    , ylab = "Y-Achsenbeschriftung"
    , main = "Plot mit Standard-Parametern"
)
 
# Alle änderbaren Standardparameter speichern
original_parameter = par(no.readonly=TRUE)
 
# Plot mit geändertem Rahmen und linksbündigen Beschriftungen
par( mar = c(4,4,1,0) + 0.1 , adj = 0)
plot(
    x = 1, y = 1
    , xlab = "X-Achsenbeschriftung"
    , ylab = "Y-Achsenbeschriftung"
    , main = "Plot mit eigenen Parametern"
)
 
# Standard-Parameter einsetzen
par(original_parameter)
 
# Erneut mit Standard-Parametern plotten
plot(
    x = 1, y = 1
    , xlab = "X-Achsenbeschriftung"
    , ylab = "Y-Achsenbeschriftung"
    , main = "Plot mit Standard-Parametern"
)
 
# Ausgabegerät schließen (hier: Daten in PDF-Datei speichern)
dev.off()

Im oben stehenden Beispiel wurden all diejenigen Parameter zwischengespeichert, die auch tatsächlich geändert werden können. Parameter wie z.B. cin oder csi können zwar gelesen, aber nicht geändert werden. Um nur änderbare Parameter auszulesen, muss in der Funktion par() die Option no.readonly auf TRUE gesetzt werden. Ansonsten bekommt man folgende Fehlermeldung:

Warnmeldungen:
1: In par(original_parameter) : graphical parameter "cin" cannot be set
2: In par(original_parameter) : graphical parameter "cra" cannot be set
3: In par(original_parameter) : graphical parameter "csi" cannot be set
4: In par(original_parameter) : graphical parameter "cxy" cannot be set
5: In par(original_parameter) : graphical parameter "din" cannot be set

Anstatt alle änderbaren Parameter zwischen zu speichern, kann man sich auch nur eine Auswahl an Parametern merken:

12
13
# Auswahl an änderbaren Standardparametern speichern
original_parameter = par(c("mar", "adj"))