r base graphics

105
R base graphics Mark Heckmann University of Bremen, Germany www.markheckmann.de Version Januar, 2014 © CC BY-NC 2.0 DE

Upload: mark-heckmann

Post on 28-Nov-2014

984 views

Category:

Education


0 download

DESCRIPTION

Slides from my R courses

TRANSCRIPT

Page 1: R base graphics

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

(base) graphics

Zwei Grafiksysteme

grid graphics

•  Älteres System •  Sehr schnell •  Sehr viele

vereinzelte Funktionen

lattice ggplot2

Page 3: R base graphics

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

High-Level Funktionen

Page 5: R base graphics

High-Level Grafik-Funktionen plot! hist! barplot!

qqnorm! boxplot!

Page 6: R base graphics

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

Histogramm mit hist!

x <- rnorm(1000)!hist(x)!

Page 8: R base graphics

?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

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

Your turn! - Erstelle folgendes Histogramm mit zufälligen Werten mit dem Datensatz

Page 11: R base graphics

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

Your turn! - Erstelle folgenden Plot mit dem iris Datensatz

Page 13: R base graphics

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

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

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

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

Vektorisierte Argumente

plot(IQbio, IQfoster, col=class,! las=1, pch=16, cex=4)!

Page 18: R base graphics

Your turn! – Verändere den letzten Plot folgendermaßen

Page 19: R base graphics

Argument pch – point character

Kann ein Vektor mit Zahlen zwischen 1 und 20 sein oder mit einem Zeichen !!

! ! ! ! ! ! !pch="#"!

Page 20: R base graphics

Weitere vektorisierte Argumente

cnum <- as.numeric(class) # umwandeln!plot(IQbio, IQfoster, col=cnum,! las=1, pch=cnum, cex=cnum)!

Page 21: R base graphics

Your turn! Erstelle folgenden Plot

Page 22: R base graphics

Your turn! Erstelle folgenden Plot

Page 23: R base graphics

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

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

!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

Balkendiagramm mit barplot!

v <- c(1, 3, 2)!barplot(v, names.arg = c("A", "B", "C"))!

names.arg!

Page 27: R base graphics

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

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

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

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

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

plot(IQbio, IQfoster) # numerisch!

Streudiagramm

Page 33: R base graphics

plot(Burt) # dataframe!

Paarweise Streudiagramme

Page 34: R base graphics

plot(class, IQbio) # factor, num.!

Boxplot

Page 35: R base graphics

plot(class) # factor!

Balkendiagramm

Page 36: R base graphics

m <- lm(IQbio ~ IQfoster)!plot(m) # linear model!

Regression

Page 37: R base graphics

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

Legenden

Page 39: R base graphics

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

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

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

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

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

Argumente •  x!•  Y !•  xjust !•  yjust!

1!

0!

yjust!

1!0!xjust!

Positionieren der Legende

Page 45: R base graphics

Über Schlüsselwörter positionieren

Page 46: R base graphics

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

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

Füge zum vorherigen Plot eine Legende hinzu

Page 49: R base graphics

Plot in Datei speichern

Page 50: R base graphics

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

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

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

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

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

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

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

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

Erstelle folgende png-Grafik mit einer Auflösung von 300 ppi

Page 59: R base graphics

Plot Layout

Page 60: R base graphics

Verschiedene Plot Bereiche

Siehe auch: Clarkson, 2010, http://www.stat.tamu.edu/~jkim/Rfigurelayout.pdf

Page 61: R base graphics

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

Verschiedene Plot Bereiche

Siehe auch: Clarkson, 2010, chr

mar[1] = 5!

oma[1] = 3!

Page 63: R base graphics

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

adj=1!adj=0!

adj=1!

Page 65: R base graphics

Your turn! – Verändere den iris-Daten Plot folgendermaßen

Page 66: R base graphics

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

mfrow=c(1,2)

Page 68: R base graphics

Your turn! – Erweitere den iris-Daten Plot folgendermaßen

Page 69: R base graphics

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

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

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

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

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

Ü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

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

Your turn! – Erzeuge folgenden Plot mit dem iris-Datensatz

Page 77: R base graphics

Low-Level Funktionen

Page 78: R base graphics

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

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

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

# 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

# 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

# Regressionsgrade!m <- lm(IQfoster ~ IQbio, ! data = Burt)!abline(m, col = "grey")!!

# Text hinzufügen!text(120, 120, "OR")!

Page 84: R base graphics

Your turn! – Erzeuge folgenden Plot

Page 85: R base graphics

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

Text

Page 87: R base graphics

# 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

# 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

Farben in R Inspired by http://research.stowers-institute.org/efg/Report/UsingColorInR.pdf

Page 90: R base graphics

In R können verschiedene Elemente des Plots Farben annehmen

•  Punkte •  Linien •  Achsen •  Legenden •  Text •  Hintergrund •  etc.

Page 91: R base graphics

Punkte

Tick-Label

Legende

Überschrift

Achsen Label

Achse

Tick

Hintergrund

Page 92: R base graphics

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

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

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

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

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

Erstelle folgenden Plot

Page 98: R base graphics

Grautöne

grey(0)![1] "#000000"!!grey(.5)![1] "#808080"!!grey(1)![1] "#FFFFFF"!!

"grey0"!!!"grey50"!!!"grey100"!

Page 99: R base graphics

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

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

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

Erstelle folgenden Plot mit 10000 zufälligen Werten ~N(0,1)

Page 103: R base graphics

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

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