r base graphics

Post on 28-Nov-2014

985 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides from my R courses

TRANSCRIPT

R base graphics

Mark Heckmann University of Bremen, Germany

www.markheckmann.de

Version Januar, 2014

© CC BY-NC 2.0 DE

(base) graphics

Zwei Grafiksysteme

grid graphics

•  Älteres System •  Sehr schnell •  Sehr viele

vereinzelte Funktionen

lattice ggplot2

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

High-Level Funktionen

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

qqnorm! boxplot!

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)!

Histogramm mit hist!

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

?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 ...

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!

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

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!

Your turn! - Erstelle folgenden Plot mit dem iris Datensatz

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

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.

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!

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 !

Vektorisierte Argumente

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

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

Argument pch – point character

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

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

Weitere vektorisierte Argumente

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

Your turn! Erstelle folgenden Plot

Your turn! Erstelle folgenden Plot

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.!

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)

!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

Balkendiagramm mit barplot!

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

names.arg!

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!

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 !

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!

Your turn! - Erstelle einen Barplot der anzeigt, wieviel Prozent der Personen pro Jahrgang abschalten (d.ngo Datensatz aus dem ryouready Paket)

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)!

plot(IQbio, IQfoster) # numerisch!

Streudiagramm

plot(Burt) # dataframe!

Paarweise Streudiagramme

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

Boxplot

plot(class) # factor!

Balkendiagramm

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

Regression

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.!

Legenden

Legenden können über die Funktion legend hinzugefügt werden

Es können vier Typen von Legende erzeugt werden: •  Boxen •  Linien •  Symbole •  Linien + Symbole !

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!

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!

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!

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!

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

1!

0!

yjust!

1!0!xjust!

Positionieren der Legende

Über Schlüsselwörter positionieren

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!

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!

Füge zum vorherigen Plot eine Legende hinzu

Plot in Datei speichern

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()!!

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!!!

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

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()!

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

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

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

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!! !

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

Plot Layout

Verschiedene Plot Bereiche

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

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

Verschiedene Plot Bereiche

Siehe auch: Clarkson, 2010, chr

mar[1] = 5!

oma[1] = 3!

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

adj=1!adj=0!

adj=1!

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

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!

mfrow=c(1,2)

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

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!

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)!

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

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)!

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!

Ü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

:

:

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)!!

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

Low-Level Funktionen

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

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)

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

# 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")!!

# 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)!

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

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

Your turn! – Erzeuge folgenden Plot

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

Text

# 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

# 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")!

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

In R können verschiedene Elemente des Plots Farben annehmen

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

Punkte

Tick-Label

Legende

Überschrift

Achsen Label

Achse

Tick

Hintergrund

Farben in R

Farben können in R auf unterschiedliche Art spezifiziert werden Als Name: "red", "blue”!!Als Zahl: !Als Hexadezimal-Code: “#12FE99"!!

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.

Als Zahl

Größere Zahlen führen zu recycleten Farben

plot(1:50, pch=16, col=1:50)!Z.B.

plot(1:8, pch=16,! cex=4, col=1:8)!

plot(1:24, pch=16,! cex=4, col=1:24)!

Farben als Namen colors()! [1] "white" "aliceblue" "antiquewhite" ! [4] "antiquewhite1" "antiquewhite2" "antiquewhite3" ! [7] "antiquewhite4" "aquamarine" "aquamarine1" ![10] "aquamarine2" "aquamarine3" "aquamarine4" !

Erstelle folgenden Plot

Grautöne

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

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

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)!

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)!

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

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

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

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

top related