Download - R base graphics
![Page 1: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/1.jpg)
R base graphics
Mark Heckmann University of Bremen, Germany
www.markheckmann.de
Version Januar, 2014
© CC BY-NC 2.0 DE
![Page 2: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/2.jpg)
(base) graphics
Zwei Grafiksysteme
grid graphics
• Älteres System • Sehr schnell • Sehr viele
vereinzelte Funktionen
lattice ggplot2
![Page 3: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/3.jpg)
Arten von base graphics Funktionen
High-Level functions Erstellen komplexer Grafiken, z.B. (hist) Low-Level functions Erstellung von Linien, Punkte, Achsen etc. oftmals on-top auf High-Level Funktion
![Page 4: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/4.jpg)
High-Level Funktionen
![Page 5: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/5.jpg)
High-Level Grafik-Funktionen plot! hist! barplot!
qqnorm! boxplot!
![Page 6: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/6.jpg)
Don‘t get fooled by default looks: Mit R base graphics kann man wunderschöne Grafiken produzieren. Allerdings benötigt dies meist viel Code
Rahlf, T. (2014) Datendesign mit R, S. 222 ff.
!par(mai=c(0.5,1,0.5,0.5),! omi=c(0.5,0.5,0.5,0.5),! family="Lato Light",las=1)!frauen <- read.csv("daten/frauen.txt",header =F,sep=",")!for(i in 1:111) ! colnames(frauen)[i]<-paste("x",i+1949,sep="") !maenner<-read.csv("daten/maenner.txt",header =F,sep=",")!for(i in 1:111) ! colnames(maenner)[i]<-paste("x",i+1949,sep="")!rechts<-frauen$x2010!links<-maenner$x2010!farbe_rechts<-c(! rep(rgb(210,210,210,maxColorValue=255),15),! rep(rgb(144,157,172,maxColorValue=255),50),! rep(rgb(225,152,105,maxColorValue=255),! length(rechts)-65))!farbe_links<-farbe_rechts!barplot(rechts,axes=F,horiz=T,axis.lty=0,! border=NA, col=farbe_rechts,xlim=c(-750,750))!barplot(-links,axes=F,horiz=T,axis.lty=0,border=NA, ! col=farbe_links,xlim=c(-750,750),add=T)!abline(v=0,lwd=28,col=par("bg"))!for (i in seq(10,90,by=10)) text(0,i+i*0.2,i,cex=1.1) ! mtext(abs(seq(-600,600,by=200)),! at=seq(-600,600,by=200), 1,line=-1,cex=0.80)! rect(-1000,15+15*0.2,1000,66+66*0.2,xpd=T, ! col=rgb(210,210,210,90,maxColorValue=255),! border=NA)!mtext("erwerbsfähiges Alter",2,line=1.5,las=3,adj=0.38) !mtext("Männer",3,line=-5,adj=0.25,cex=1.5,col="grey") !mtext("Frauen",3,line=-5,adj=0.75,cex=1.5,col="grey") !mtext("Altersaufb...",3,line=-1.5,adj=0,cex=1.75,! family="Lato Black",outer=T) !mtext("Angaben in...",3,line=-3.25,adj=0,cex=1.25,! font=3,outer=T) !mtext("Quelle: ww...",1,line=0,adj=1.0,cex=0.95,! font=3,outer=T)!
![Page 7: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/7.jpg)
Histogramm mit hist!
x <- rnorm(1000)!hist(x)!
![Page 8: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/8.jpg)
?hist - Argumente von hist!
hist(x, breaks = "Sturges",! !freq = NULL, probability = !freq,! !include.lowest = TRUE, right = TRUE,! !density = NULL, angle = 45, !! !col = NULL, border = NULL!! !main = paste("Histogram of" , xname),!
!xlim = range(breaks), ylim = NULL,! !xlab = xname, ylab,! !axes = TRUE, plot = TRUE, !! !labels = FALSE,!
!nclass = NULL, !! !warn.unused = TRUE, ...)!
Noch mehr Argumente. Mehr dazu später ...
![Page 9: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/9.jpg)
hist(x, breaks=25, col="grey", main="Histogramm", ! xlab="Werte von x", ylab="Häufigkeit",! ylim=c(0, 100), xlim=c(-5, 5),! border="white")!
main!
border!
xlab!
ylab!
xlim!
ylim!
col!
breaks!
![Page 10: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/10.jpg)
Your turn! - Erstelle folgendes Histogramm mit zufälligen Werten mit dem Datensatz
![Page 11: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/11.jpg)
Streudiagramm mit plot!
plot(x=IQbio, y=IQfoster, type="p",! xlab="IQ of twin raised by biological parents",! ylab="IQ of twin raised by foster parents",! main="IQ - Zwilling im Vergleich",! xlim=c(60, 140), ylim=c(60, 140))!
main!
type!
xlab!
ylab!
xlim!
ylim!
![Page 12: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/12.jpg)
Your turn! - Erstelle folgenden Plot mit dem iris Datensatz
![Page 13: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/13.jpg)
Einstellung graphischer Parameter
?par # > 50 Parameter! bg Hintergrundfarbe des Plots cex Größe des Texts im Plot col! Farbe der dargestellten Elemente las Stil der Achsenbeschriftung lwd Breite von gezeichneten Linien pch Art des dargestellte Symbols
![Page 14: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/14.jpg)
Graphical parameters
Über die Funktion par können graphische Parameter festgelegt werden. Dies kann entweder
a) direkt über die Funktion par vor dem Aufruf einer High-Level Funktion, wie z.B plot,
b) oder über das Drei-Punkte-Argument ... innerhalb der Funktion geschehen.
Üblicher ist letzteres, denn dies verändert nur den aktuellen Plot. Erstgenannte verändert alle nachfolgenden Plots.
![Page 15: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/15.jpg)
Die Argumente von par können direkt in die Funktion plot eingegeben werden (Datensatz Burt aus Paket car)
plot(IQbio, IQfoster, col="darkgrey",! las=1, pch=16, cex=3)!
col!las!
cex!
pch!
![Page 16: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/16.jpg)
Farben können u.a. als Zahl zwischen 1 und 8 oder als Text definiert werden
"red", "blue", "green", "grey”
... später mehr !
Farben – Argument col !
![Page 17: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/17.jpg)
Vektorisierte Argumente
plot(IQbio, IQfoster, col=class,! las=1, pch=16, cex=4)!
![Page 18: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/18.jpg)
Your turn! – Verändere den letzten Plot folgendermaßen
![Page 19: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/19.jpg)
Argument pch – point character
Kann ein Vektor mit Zahlen zwischen 1 und 20 sein oder mit einem Zeichen !!
! ! ! ! ! ! !pch="#"!
![Page 20: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/20.jpg)
Weitere vektorisierte Argumente
cnum <- as.numeric(class) # umwandeln!plot(IQbio, IQfoster, col=cnum,! las=1, pch=cnum, cex=cnum)!
![Page 21: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/21.jpg)
Your turn! Erstelle folgenden Plot
![Page 22: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/22.jpg)
Your turn! Erstelle folgenden Plot
![Page 23: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/23.jpg)
par vor plot aufrufen
Anstatt die Argumente für par innerhalb von plot anzugeben können diese auch vor dem Aufruf von plot angegeben werden !par(cex=2)!!plot(IQbio, Iqfoster)!
!Allerdings betrifft die Einstellung danach alle weiteren Plots. Für manche Argumente, wie bg (background), funktioniert es jedoch nur so.!
![Page 24: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/24.jpg)
Deshalb sollte man nach Erstellung der Grafik die Ursprungseinstellung von par wieder herstellen
!par gibt eine Liste mit den
Einstellungen vor der Änderung zurück
op <- par(cex=2)!plot(IQbio, Iqfoster)!par(op)!
Zurücksetzen auf alte Einstellungen (in op
gespeichert)
![Page 25: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/25.jpg)
!a) ! !op <- par(cex=2)!! ! !plot(IQbio, Iqfoster)!! ! !par(op)!!b) ! !plot(IQbio, Iqfoster, cex=2)!!
... - Argumente werden an die Funktion
par weitergeleitet
par Aufrufe im Vergleich
![Page 26: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/26.jpg)
Balkendiagramm mit barplot!
v <- c(1, 3, 2)!barplot(v, names.arg = c("A", "B", "C"))!
names.arg!
![Page 27: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/27.jpg)
Mehrdimensionale Balkendiagramme!
m <- matrix(c(1, 3, 2, ! 2, 2, 4), ncol=3, by=T)!barplot(m, beside=FALSE, names.arg = ! c("Col 1", "Col 2", "Col 3"))!
beside=FALSE! beside=TRUE!
![Page 28: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/28.jpg)
Balkendiagramme nutzen aggregierte Daten (Anzahl pro Kategorie). Die Datenstruktur kann z.B. mit Hilfe von table erzeugt werden attach(mtcars)!cats <- c("3 Gänge", "4 Gänge", "5 Gänge”)!
tbl <- table(gear)!barplot(tbl, names=cats)!!tbl! 3 4 5 !15 12 5 !
![Page 29: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/29.jpg)
prop <- prop.table(tbl, 2)!barplot(prop, names=cats)!!prop! 3 4 5!0 0.80 0.17 0.80!1 0.20 0.83 0.20!!
tbl <- table(vs, gear)!barplot(tbl, names=cats)!!tbl! 3 4 5!0 12 2 4!1 3 10 1!
![Page 30: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/30.jpg)
Your turn! - Erstelle einen Barplot der anzeigt, wieviel Prozent der Personen pro Jahrgang abschalten (d.ngo Datensatz aus dem ryouready Paket)
![Page 31: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/31.jpg)
Plot – Eine generische Funktion
Bisher haben wir ein Streudiagramm mit plot erzeugt. Es existiert jedoch nicht nur eine, sondern sehr viele Funktionen mit dem Namen plot. Welche plot Funktion gemeint ist hängt davon ab, was für ein Objekt (Dataframes, Faktoren, Regressionen) geplottet werden soll. library(car)!attach(Burt)!
![Page 32: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/32.jpg)
plot(IQbio, IQfoster) # numerisch!
Streudiagramm
![Page 33: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/33.jpg)
plot(Burt) # dataframe!
Paarweise Streudiagramme
![Page 34: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/34.jpg)
plot(class, IQbio) # factor, num.!
Boxplot
![Page 35: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/35.jpg)
plot(class) # factor!
Balkendiagramm
![Page 36: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/36.jpg)
m <- lm(IQbio ~ IQfoster)!plot(m) # linear model!
Regression
![Page 37: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/37.jpg)
Plot – Eine generische Funktion
Wenn man die Hilfe zu plot aufruft steht hier Generic function for plotting of R objects. Wenn ein Streudiagramm erstellt werden soll, erkennt R, dass x und y numerisch sind und nutzt deshalb die Funktion plot.default. Hier stehen in der Hilfe deutlich mehr Argumente als in plot. !Zum plotten einer Regression nutzt R die Funktion plot.lm. Als Nutzer merkt man dies nicht, wenn man einfach plot eingibt. Wenn man jedoch die Argumente für plot sucht, muss man bei der jeweiligen plot-Funktion nachschauen.!
![Page 38: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/38.jpg)
Legenden
![Page 39: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/39.jpg)
Legenden können über die Funktion legend hinzugefügt werden
Es können vier Typen von Legende erzeugt werden: • Boxen • Linien • Symbole • Linien + Symbole !
![Page 40: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/40.jpg)
legend(x=1, y=10, ! legend=c("Eins","Zwei", ! "Drei","Vier"), ! fill=1:4, ! title="Boxen")!
title!
fill!
legend!
ncol=2!border=“red"!
density=20, horiz=TRUE!
border!density!
![Page 41: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/41.jpg)
legend(x=1, y=10, ! legend=c("Eins","Zwei", ! "Drei","Vier"), ! lwd=1, ! title=“Linien")!lwd:line
width!
lwd=4!seg.len=5!
seg.len!
lty=1:4!
lty: line type!
![Page 42: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/42.jpg)
legend(1, 10, !! ! c("Eins", "Zwei", !
"Drei", "Vier"), ! pch=1:4, col=1:4,! text.col=1:4,! title="Symbole")!
text.col!
pch!
pt.cex=c(.5, 1, 1.5, 2) pt.lwd=c(1,3,6,9)!
pt.cex, pt.lwd!
pch=1:4!lwd=4!merge=TRUE!
![Page 43: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/43.jpg)
legend(1, 10, ! LETTERS[1:3], ! fill=1:4, ! title.col="blue",! title="Boxen", ! bg="gray90", ! box.col="red", ! box.lwd=3,! y.intersp=2)!
title.col!
box.lwd!box.col!
y.intersep!
cex=2!
bg!
![Page 44: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/44.jpg)
Argumente • x!• Y !• xjust !• yjust!
1!
0!
yjust!
1!0!xjust!
Positionieren der Legende
![Page 45: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/45.jpg)
Über Schlüsselwörter positionieren
![Page 46: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/46.jpg)
Legenden Argumente in Grafik Funktionen
m <- matrix(1:4, 2)!barplot(m, col = 2:3,! legend.text = c("A","B")) !
Einige Grafikfunktionen, z.B. barplot, besitzen Argumente um Legenden automatisch zu generieren
Unschöne Platzierung!
![Page 47: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/47.jpg)
barplot(m, col = 2:3,! legend.text = c("A", "B"), ! args.legend = ! list(x="topleft”,bty="n"))!
In dieser Variante wird die Legende ebenfalls durch die Funktion legend erzeugt. Die Funktion wird nur hinter den Kulissen durch barplot automatisch aufgerufen. Um die Legende anzupassen, können weitere Argumente an legend über das Argument args.legend als Liste übergeben werden.
Platzierung oben links!
Kein Rahmen um Legende!
![Page 48: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/48.jpg)
Füge zum vorherigen Plot eine Legende hinzu
![Page 49: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/49.jpg)
Plot in Datei speichern
![Page 50: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/50.jpg)
Grafik als Datei speichern
R kann unterschiedliche Output Formate erzeugen. Hierzu stehen u.a. folgende Funktionen zur Verfügung
## Bitmap Format!jpeg() ! ! ! ! !# öffnet jpeg device!bmp() ! ! ! ! !# öffnet bmp device!png() ! ! ! ! !# öffnet png device!!## Vektorformat!pdf() ! ! ! ! !# pdf device öffnen!cairo_pdf !# Alternative zu pdf()!!
![Page 51: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/51.jpg)
Grafikdatei erstellen
Vorgehen für alle Dateitypen:
1. Grafik Device (Datei) öffnen 2. Grafikcode (eine / mehrere Zeilen) ausführen 3. Device (Datei) schließen pdf("mein_plot.pdf“) !# pdf device öffnen!!plot(1:10) ! ! # Grafikbefehl(e)!
dev.off()! ! ! ! ! !# device schließen!!!
![Page 52: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/52.jpg)
pdf("mein_plot.pdf", width=5, height=3)! par(bg="grey95") ! plot(1:10, col="blue", pch=16, ! !!! ! !main="Plot in PDF")!
dev.off()
●●
●●
●●
●●
●●
2 4 6 8 10
24
68
Plot in PDF
Index
1:10
Breite in Inch Höhe in Inch
![Page 53: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/53.jpg)
Bitmap-Formate
Bei Bitmap-Formaten wird die Größe (width, height) des Plots in Punkten (Pixel) angegeben. Die Vorein-stellung sind 480 Pixel.
Weiterhin gibt es ein Argument res, das die Auflösung (Feinheit des Plots), d.h. die Anzahl an Pixeln pro Inch (ppi, default sind 72), angibt.
png("plot.png", width=480, height=480, res=72)! !par(bg="grey95") ! !plot(1:10)!dev.off()!
![Page 54: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/54.jpg)
Bitmap Formate und Auflösung
Die Standardeinstellung für z.B. png ist 72 Pixel pro Inch (ppi). Dies ist für Web-Grafiken der Standard. Diese Qualität ist jedoch zu gering für Publikationen. Ziel: 300ppi.
72ppi 300ppi
![Page 55: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/55.jpg)
Die Auflösung kann mit dem Argument res verändert werden. Setzen wir diese zunächst auf 2 * 72ppi = 144 ppi
Folge: Der Plot ist immer noch 480 Pixel breit. Bei doppelter Auflösung bedeutet dies effektiv jedoch nur noch die halbe Breite
![Page 56: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/56.jpg)
Um das gleiche Ergebnis wie zuvor nur mit doppelter Auflösung zu erhalten, muss die Größe des Plots (Anzahl der Pixel) ebenfalls um den Faktor 2 vergrößert werden.
png("72ppi.png", ! width = 480, height = 480, res = 72)! plot(1:10)!dev.off()!
png("144ppi.png", ! width = 480*2, height = 480*2, res = 72*2)! plot(1:10)!dev.off()!
Jetzt: Doppelte Auflösung und doppelte Größe
Vorher: Einfache Auflösung und einfache Größe
![Page 57: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/57.jpg)
Typische Fehler
Achtung: Manchmal vergisst man offene devices wieder zu schließen dev.list() ! ! !# welche devices sind !! ! ! ! ! ! !# noch offen?!
!graphics.off()! !# alle devices schließen!! !
![Page 58: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/58.jpg)
Erstelle folgende png-Grafik mit einer Auflösung von 300 ppi
![Page 59: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/59.jpg)
Plot Layout
![Page 60: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/60.jpg)
Verschiedene Plot Bereiche
Siehe auch: Clarkson, 2010, http://www.stat.tamu.edu/~jkim/Rfigurelayout.pdf
![Page 61: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/61.jpg)
Verschiedene Plot Bereiche
plot-Bereich: eigentlicher Inhalt des Plots (Punkte, Linien, Histogramm etc.) figure-Bereich: Achsen und zugehörige Labels. Breite wird als Vielfaches einer Zeilenhöhe im Uhrzeigersinn angegeben (unten, links, oben, rechts). Voreinstellung:
! ! !mar=c(5.1, 4.1, 4.1, 2.1)! device-Bereich: Umgrenzt einen oder mehrere figure Bereiche. Wird meist als zusätzlicher Rahmen genutzt. Voreinstellung:
oma=c(5.1, 4.1, 4.1, 2.1)! Siehe auch: Clarkson, 2010, http://www.stat.tamu.edu/~jkim/Rfigurelayout.pdf
![Page 62: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/62.jpg)
Verschiedene Plot Bereiche
Siehe auch: Clarkson, 2010, chr
mar[1] = 5!
oma[1] = 3!
![Page 63: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/63.jpg)
Funktionen zu den Bereichen
box(which="plot") !# Rahmen um Plot Bereich!box(which="figure") # ... um Figure Bereich!box(which="outer") # ... um Device Bereich !! !Text im Figure oder Device Bereich !mtext("figure links", side=1, !! ! line= 2, adj=0)!
mtext("device rechts", side=1, ! line= 2, adj=1, outer=TRUE)!
Siehe auch: Clarkson, 2010, http://www.stat.tamu.edu/~jkim/Rfigurelayout.pdf
![Page 64: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/64.jpg)
adj=1!adj=0!
adj=1!
![Page 65: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/65.jpg)
Your turn! – Verändere den iris-Daten Plot folgendermaßen
![Page 66: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/66.jpg)
Anordnen von Plots mit mfrow!par kennt das Argument mfrow. Dies gibt die horizontale und vertikal Anzahl an gleich großen figure Bereichen an !par(mfrow=c(1,2), oma=c(1,1,1,1))!plot(rnorm(10), rnorm(10))!hist(rnorm(100))!
Layout mit 1 Zeile und 2 Spalten!
![Page 67: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/67.jpg)
mfrow=c(1,2)
![Page 68: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/68.jpg)
Your turn! – Erweitere den iris-Daten Plot folgendermaßen
![Page 69: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/69.jpg)
Anordnen von Plots mit layout!layout erlaubt komplexe Anordnungen. Figure Bereiche können sich über mehrere Zeilen oder Spalten erstrecken. Auch kann die Breite und Höhe jeweils einzeln bestimmt werden. !
5 separat bedruckbare
Figure Bereiche!
Figure Bereich 1 über 3 Spalten!
Figure Bereich 5 über 2 Zeilen!
![Page 70: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/70.jpg)
Definition des Layouts Die Definition des Layouts geschieht mit Hilfe einer Matrix Das Erstellen und Aktivieren eines Layouts erfolgt über die Funktion layout!
m <- matrix(1:4), ncol=2, by=T)!m! [,1] [,2]![1,] 1 2![2,] 3 4!
layout(m)!
![Page 71: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/71.jpg)
Das Layout ist nach dem Erzeugen bereits aktiv. Es wird in der Reihenfolge der Zahlen in der Matrix gefüllt
plot(1:10)!hist(rnorm(100))!plot(1:10, col=2)!plot(1:10, col=4)!
Beim Aufruf einer High-Level Funktion wird jeweils ein neuer Plot-Bereich gefüllt
![Page 72: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/72.jpg)
Visualisierung des Layouts
Zur leichteren Erstellung kann eine Layout gespeichert und mittels layout.show visualisiert werden
m <- matrix(1:4), ncol=2, by=T)!l <- layout(m)!!layout.show(l)!
![Page 73: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/73.jpg)
Um einen Figure Bereich über mehrere Zeilen oder Spalten zu erstrecken, bekommen Felder in der Layout-Matrix dieselbe Zahl zugeteilt. Felder mit der Zahl 0 bleiben leer und erhalten keinen Figure Bereich.
m <- matrix(c(1,1,1,! 2,2,0,! 2,2,3), ! ncol=3, ! byrow=T)!m! [,1] [,2] [,3]![1,] 1 1 1![2,] 2 2 0![3,] 2 2 3!
![Page 74: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/74.jpg)
Über die layout Argumente widths und heights kann das Höhen-Verhältnis der Zeilen und Breiten-Verhältnis der Spalten zueinander bestimmt werden.
m <- matrix(1:4, ! ncol=2, ! by=T)!l <- layout(m, ! widths=c(1,2), ! heights=c(1,3))!!layout.show(l)!
1
3
1 3
:
:
![Page 75: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/75.jpg)
x <- rnorm(1000)!y <- rnorm(1000)!!# Layout!par(oma=c(0,0,1,3))!m <- matrix(c(1,2), ncol=1)!layout(m, height=c(1,5))!!# Histogramm!par(mar=c(0,4,0,0))!hist(x, xaxt="n", ! yaxt="n", main="",! ylab="", xlab="")!!# Streudiagramm!par(mar=c(4,4,0,0))!plot(x, y, ! xlab="", ylab="", ! las=1, pch=16)!!
![Page 76: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/76.jpg)
Your turn! – Erzeuge folgenden Plot mit dem iris-Datensatz
![Page 77: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/77.jpg)
Low-Level Funktionen
![Page 78: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/78.jpg)
Low-Level Funktionen
Eine High-Level Funktion wie plot greift auf viele Low-Level Funktionen zurück und baut aus diesen die Grafik zusammen. Dabei geschieht u.a. Folgendes: • Ein Plot-Bereich mit den Einstellungen für die
Ränder (mar, oma) wird angelegt • Die Inhalte (z.B. Punkte werden gedruckt) • Die Achsen und die Labels werden hinzugefügt
![Page 79: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/79.jpg)
Nutzung von Low-Level Funktionen
Low-Level Funktionen werden auf zwei Weisen verwendet: 1. Nachdem eine High-Level Funktion genutzt
wurde. Z.B. um noch weitere Punkte oder Linien zum Plot hinzuzufügen
2. Erstellung einer Grafik von Grund auf (engl. from sratch)
![Page 80: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/80.jpg)
Einige Low-Level Grafik-Funktionen points! Punkte erzeugen
lines! Linien erzeugen
rect! Rechtecke erzeugen
polygon! Polygon erzeugen
abline! Einfache vert. und horiz. Linien
arrows! Pfeil erzeugen
text! Text erzeugen
mtext! Text in den Rändern erzeugen
title! Überschrift erzeugen
axis! Achsen erstellen
grid! Raster hinzufügen
![Page 81: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/81.jpg)
# Plot aufsetzen!library(car)!attach(Burt)!plot(IQbio, IQfoster)!
# Raster hinzufügen!grid(lty="solid")!!!# Horiz. und vert. Linien !abline(h=100, col="red")!abline(v=100, col="red")!!
![Page 82: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/82.jpg)
# Punkte oben rechts in!# rot neu plotten!i <- IQbio > 100 & ! IQfoster > 100!points(IQbio[i], IQfoster[i], ! col = "red", pch = 16)!
# Halb-transparentes !# Rechteck hinzufügen rect(100, 100, 140, 140,! col = "#FF000020", ! border = NA)!
![Page 83: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/83.jpg)
# Regressionsgrade!m <- lm(IQfoster ~ IQbio, ! data = Burt)!abline(m, col = "grey")!!
# Text hinzufügen!text(120, 120, "OR")!
![Page 84: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/84.jpg)
Your turn! – Erzeuge folgenden Plot
![Page 85: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/85.jpg)
Leere Plots erzeugen
# Leerer plot mit passenden!# Limits!plot(IQbio, IQfoster, ! type = "n")!!
„n“ unterdrückt die Punkte
# Leerer plot mit Limits !# von Hand!plot(NULL, ! xlim = c(70, 130), ! ylim = c(70, 130) )!
Keine Daten
![Page 86: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/86.jpg)
Text
![Page 87: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/87.jpg)
# Leerer plot mit korrekten!# Limits!plot(IQbio, IQfoster, ! type = "n")!!
# Punkte hinzufügen!points(IQbio, IQfoster, ! col="grey", pch=16)!
„n“ unterdrückt die Punkte
![Page 88: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/88.jpg)
# Leerer plot mit korrekten!# Limits!i <- which(IQbio > 130)!x <- IQbio[i]!y <- IQfoster[i]!points(x, y, col = "red", ! pch = 16)!
# Pfeil und Text!arrows(x, y - 10, ! x, y, ! length=0.2, ! lwd = 2, col = "red")!text(x, y-12, ! "Sehr schlau", ! adj = 1, col = "red")!
![Page 89: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/89.jpg)
Farben in R Inspired by http://research.stowers-institute.org/efg/Report/UsingColorInR.pdf
![Page 90: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/90.jpg)
In R können verschiedene Elemente des Plots Farben annehmen
• Punkte • Linien • Achsen • Legenden • Text • Hintergrund • etc.
![Page 91: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/91.jpg)
Punkte
Tick-Label
Legende
Überschrift
Achsen Label
Achse
Tick
Hintergrund
![Page 92: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/92.jpg)
Farben in R
Farben können in R auf unterschiedliche Art spezifiziert werden Als Name: "red", "blue”!!Als Zahl: !Als Hexadezimal-Code: “#12FE99"!!
![Page 93: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/93.jpg)
Als Zahl
Wenn man eine Zahl eingibt wird die Standardpalette genutzt !palette()![1] "black" "red" "green3" ![4] "blue" "cyan" "magenta"![7] "yellow" "gray" !
Die Zahl 0 heißt keine Farbe, d.h. weiß, wenn der Hintergrund der Grafik weiß ist.
![Page 94: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/94.jpg)
Als Zahl
Größere Zahlen führen zu recycleten Farben
plot(1:50, pch=16, col=1:50)!Z.B.
![Page 95: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/95.jpg)
plot(1:8, pch=16,! cex=4, col=1:8)!
plot(1:24, pch=16,! cex=4, col=1:24)!
![Page 96: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/96.jpg)
Farben als Namen colors()! [1] "white" "aliceblue" "antiquewhite" ! [4] "antiquewhite1" "antiquewhite2" "antiquewhite3" ! [7] "antiquewhite4" "aquamarine" "aquamarine1" ![10] "aquamarine2" "aquamarine3" "aquamarine4" !
![Page 97: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/97.jpg)
Erstelle folgenden Plot
![Page 98: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/98.jpg)
Grautöne
grey(0)![1] "#000000"!!grey(.5)![1] "#808080"!!grey(1)![1] "#FFFFFF"!!
"grey0"!!!"grey50"!!!"grey100"!
![Page 99: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/99.jpg)
RGB Modell C
C: B
y Sh
ark
D o
n h
ttp
://e
n.w
ikip
ed
ia.o
rg/w
iki/
File
:Ad
diti
veC
olo
r.svg
Funktion rgb setzt Farben aus Rot-Grün-Blau Anteilen zusammen Anteil kann jeweils von 0 bis 1 reichen Die Funktion gibt einen String zurück rgb(.4, .2, .8)! [1] "#6633CC"!
rgb(1,1,1)!
rgb(0,1,0)! rgb(0,1,1)!
![Page 100: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/100.jpg)
RGB Modell C
C: B
y Sh
ark
D o
n h
ttp
://e
n.w
ikip
ed
ia.o
rg/w
iki/
File
:Ad
diti
veC
olo
r.svg
Häufig werden die Anteile auch mit Werten zwischen 0 und 255 genutzt. rgb(102, 51, 204, max=255)! [1] "#6633CC"! !
rgb(255,255,255, max=255)!
rgb(0,255,0,max=255)!
![Page 101: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/101.jpg)
Alpha Parameter
Alpha meint den Grad an Transparenz einer Farbe. Von 0=undurchlässig, 1=völlig durchlässig.
rgb(1,0,0)!
rgb(1,0,0,.5)!
rgb(1,0,0,.9)!
Transparenz führt, dass man overplotting sinnvoll wird
![Page 102: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/102.jpg)
Erstelle folgenden Plot mit 10000 zufälligen Werten ~N(0,1)
![Page 103: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/103.jpg)
RGB Modell in Hexadezimal-Notation Hex Dezimal
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
A 10
B 11
C 12
D 13
E 14
F 15
rgb(0,255,0, max=255)![1] "#00FF00"!
255=15 ⋅161 +15 ⋅160
255= 2 ⋅101 + 5 ⋅101 + 5 ⋅100Dezimalsystem mit Basis 10
Hexa-Dezimalsystem mit Basis 16
Merksatz: 0=00 und 255=FF, alles andere liegt dazwischen
F F
![Page 104: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/104.jpg)
RGB Modell in Hexadezimal-Notation Hex Dezimal
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
A 10
B 11
C 12
D 13
E 14
F 15
Hex-Werte beginnen mit einer Raute: "#00FF00"! An der viertel Position kann auch hier Alpha angegeben werden "#00FF0010"! Alpha
![Page 105: R base graphics](https://reader034.vdocuments.us/reader034/viewer/2022051609/5479faa1b4af9fc3158b4980/html5/thumbnails/105.jpg)