1/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Plotten mit GGPlot2
Referentin: Anne Kunstmann
Betreuer: Jakob LüttgauProseminar Programmieren in R
Fachbereich InformatikFakultät für Mathematik, Informatik und Naturwissenschaften
Universität Hamburg
25. Mai 2016
Anne Kunstmann Plotten mit GGPlot2
2/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Agenda
1 Einführung
2 Preprocessing
3 Grundlagen
4 Gestaltung
5 Sonstiges
Anne Kunstmann Plotten mit GGPlot2
3/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
R vs GGPlot2Geschichtlicher Hintergrund
Gegenüberstellung: R vs GGPlot2
R native Plotsgrundlegende Plot-Funktionenwortreich für komplexe Plotskeine automatische Legendenerstellungkomplexe Codeänderungen nötigverbesserungswürdige Visualisierung
Anne Kunstmann Plotten mit GGPlot2
4/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
R vs GGPlot2Geschichtlicher Hintergrund
GGPlot2grundlegende und fortgeschrittene Plot-Funktionenautomatische Legendenerstellungrobust bei Codeänderungfeste Schemata bei Plot-Erstellungerwartungsgemäße Visualisierung
Anne Kunstmann Plotten mit GGPlot2
5/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
R vs GGPlot2Geschichtlicher Hintergrund
Plot mit Rhttp://varianceexplained.org/r/why-I-
useggplot2/
Plot mit GGPlot2http://varianceexplained.org/r/why-I-
useggplot2/
Anne Kunstmann Plotten mit GGPlot2
6/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
R vs GGPlot2Geschichtlicher Hintergrund
Code in Rhttp://varianceexplained.org/r/why-I-
useggplot2/
Code mit GGPlot2http://varianceexplained.org/r/why-I-
useggplot2/
Anne Kunstmann Plotten mit GGPlot2
7/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
R vs GGPlot2Geschichtlicher Hintergrund
Einführung
Geschichtlicher HintergrundPaket zur Datenvisualisierung in REntwickler Hadley WickhamVeröffentlichung im Jahr 2005Grundlage „The Grammar of Graphics“
Buch von Leland WilkinsonJahr 1999/2005Thema statistische DatenvisualisierungFokus auf Ästhetik und Geometrie
Anne Kunstmann Plotten mit GGPlot2
8/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
R vs GGPlot2Geschichtlicher Hintergrund
Vorteilegroße Bandbreite an Funktionenhohe Abstraktionerweiterbar durch Pakete (Lattice,...)
Nachteilekeine 3D-Grafikenkeine Graphentheorie (Multigraphen, Kantenzüge,...)keine interaktiven Grafiken
Anne Kunstmann Plotten mit GGPlot2
9/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
DatenimportDatenartenDatentransformation
Datenimport
read-FunktionAufruf des Dateiformats durch „ .“-OperatorNamenszuweisung des importierten Dataframes
Parametertitle Name der zu importierenden Dateiheader = T/F Übernahme der Spaltentitel
Codebeispiel 1: Datenimport einer csv-Datei
1 a i r q u a l i t y <− read . csv ( " a i r q u a l i t y . csv " , header = T)
Anne Kunstmann Plotten mit GGPlot2
10/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
DatenimportDatenartenDatentransformation
Datenarten
Unterscheidung stetiger und diskreter Funktionen
stetigüberabzählbar unendliche viele MerkmaleGröße von Personen, Temperatur in Grad Celsius,...z.B. geom_point(), geom_curve(),...
diskretabzählbar unendlich viele MerkmaleGeschlecht, Religion, Kundenzufriedenheit, ...z.B. geom_bar(), geom_hist(),...
Anne Kunstmann Plotten mit GGPlot2
11/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
DatenimportDatenartenDatentransformation
Datentransformation
Auslegung auf „long format “- DatensätzePakete plyr und reshape2Schichten, Gruppieren, Zusammenfassen von DatenTransformation von „wide format “zu „long format “Erhöhen der Repräsentativität
Anne Kunstmann Plotten mit GGPlot2
12/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
DatenimportDatenartenDatentransformation
Codebeispiel 2 : Ermitteln der Durchschnittstemperatur pro Monat
1 a i r q u a l i t y _means <− ddply ( a i r q u a l i t y , . ( Month ) , summarise ,meanTemp = mean(Temp) )
# Vereinfachen des Dataframes auf Monat und m i t t l e r e Temperatur
Anne Kunstmann Plotten mit GGPlot2
13/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
Grundfunktionen
qplot - Funktion„quick plot“Einstiegsfunktionkein typisches GGPlot2-Prinzipgleiche grafische Darstellung wie GGPlot2-Funktion
Codebeispiel 3: Die allgemeine qplot-Funktion
l i b r a r y ( ggp lo t2 )2 qp lo t ( x , y , data = , co l o r = , shape = , f i l l = , s i ze = , alpha = ,
geom= , method= , formula = , face ts = , x l im = , y l im = , x lab = ,4 y lab = , main= , sub=)
Anne Kunstmann Plotten mit GGPlot2
14/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
ggplot - Funktion„Grammar of Graphics “Daten ausschließlich als Dataframesgeom_...()- Funktion
„geometric objetcs “Implementation außerhalb ggplot()-Funktionallgemeine Darstellung der Datengeom_point(), geom_boxplot(), geom_bar(),...
Anne Kunstmann Plotten mit GGPlot2
15/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
aes()- Funktion„aesthetics “meist Implementation innerhalb ggplot()-Funktionauch Implementation innerhalb geom_...-FunktionenUnterteilung und Unterscheidung der DatenParameter abhängig von geom_...()-Funktionx, y, colour, fill, shape, size, ...
„+ “-Operator verbindet beide Funktionskomponenten
Anne Kunstmann Plotten mit GGPlot2
16/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
Codebeispiel 4 : Minimale ggplot-Funktion
i n s t a l l . packages ( " ggp lo t2 " ) #Paket i n s t a l l i e r e n2 l i b r a r y ( ggp lo t2 ) # B i b l i o t h e k einbinden
head ( a i r q u a l i t y ) # E i n b l i c k i n Dataframe4
#Frage : E x i s t i e r t i rgende ine Ar t von Re la t ion zwischen derTemperatur und der Windstä rke?
6
ggp lo t ( a i r q u a l i t y , aes ( x = Temp, y = Wind ) + geom_ po in t ( )8 # a i r q u a l i t y a l s Dataframe , Temp und Wind a ls Vektoren aus
a i r q u a l i t y , geom_smooth ( ) f ü r Streudiagramm
Anne Kunstmann Plotten mit GGPlot2
17/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
5
10
15
20
60 70 80 90Temp
Win
d
zu Codebeispiel 4: einfaches StreudiagrammAnne Kunstmann Plotten mit GGPlot2
18/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
Regression
Verdeutlichen von Abhängigkeiten und TrendsImplementation durch geom_smooth()Regressionslinie mitsamt KonfidenzintervallErweiterung durch viele Pakete möglich
mgcv, splines, MASS,...
Anne Kunstmann Plotten mit GGPlot2
19/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
Codebeispiel 5: default-Regressionskurve
ggp lo t ( a i r q u a l i t y , aes ( x = Temp, y = Wind ) ) + geom_ po in t ( ) +geom_smooth ( )
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
5
10
15
20
60 70 80 90Temp
Wind
Anne Kunstmann Plotten mit GGPlot2
20/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
Parametermethod Regressionsarten
lineare Regression „lm“lokale Regression „loess“
se Konfidenzintervallmit Konfidenzintervall TRUEohne Konfidenzintervall FALSE
span Empfindlichkeit der RegressionWerte 0...1
Anne Kunstmann Plotten mit GGPlot2
21/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
Codebeispiel 6: lokale empfindliche Regressionskurve ohne Konfidenzintervall
1 ggp lo t ( a i r q u a l i t y , aes ( x = Temp, y = Wind ) ) + geom_ po in t ( ) +geom_smooth ( span = 0.2 , se = F , method = " loess " )
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
5
10
15
20
60 70 80 90Temp
Wind
Anne Kunstmann Plotten mit GGPlot2
22/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
Labels
Hinzufügen von punktegebundenen LabelsImplementation durch geom_text()
Textlabels überschreiben PunkteNachteil: gegenseitiges Überschreiben der Labels
Implementation durch geom_text_repel()Textlabels neben PunkteLabels ziehen Verbindungslinien zu PunktenNachteil: Einbinden des Pakets ggrepel nötig
Anne Kunstmann Plotten mit GGPlot2
23/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
Codebeispiel 7: geom_text()-Funktion
1 ggp lo t ( a i r q u a l i t y , aes ( x = Temp, y = Wind ) ) + geom_ po in t ( ) +geom_smooth ( ) + geom_ text ( aes ( l a b e l = Day ) )
#Nummerierung anhand der Messungstage auf den Punkten
Anne Kunstmann Plotten mit GGPlot2
24/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
GrundfunktionenResgressionLabels
Codebeispiel 8: geom_text_repel()
ggp lo t ( a i r q u a l i t y , aes ( x = Temp, y = Wind ) ) + geom_ po in t ( ) +geom_smooth ( ) + geom_ text _ repe l ( aes ( l a b e l = Day ) )
2 #Nummerierung anhand der Messungstage neben den Punkten
Anne Kunstmann Plotten mit GGPlot2
25/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Mapping vs Setting
möglich in ggplot()- und geom()-Funktionen„Setten“ Konstanten als Werte„Mappen“ Variablen als Werte
gegenseitiges Erweiterngegenseitiges Überschreibengegenseitiges Löschen
Einsparen von CodeVerdeutlichen der Grafikstrukturautomatische Legendenerstellung
Anne Kunstmann Plotten mit GGPlot2
26/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 9: Mapping und Setting
ggp lo t ( a i r q u a l i t y , aes ( x = Temp, y = Wind , co lour = Ozone ) ) +geom_ po in t ( s i ze = 4) + geom_smooth ( f i l l = " ye l low " , co lour= " red " ) #Mapping : Ozone , Se t t i ng : yel low , red , 4
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
5
10
15
20
60 70 80 90Temp
Wind
40
80
120
160Ozone
Anne Kunstmann Plotten mit GGPlot2
27/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 10: Mapping innerhalb ggplot
1 ggp lo t ( diamonds , aes ( x = carat , y = pr ice , co lour = cut ) ) + geom_ po in t ( ) + geom_smooth ( se=F) #Regression f ü r Gruppen vonPunkten mi t gleichem S c h l i f f
Anne Kunstmann Plotten mit GGPlot2
28/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 11: Mapping innerhalb ggplot und geom
1 ggp lo t ( diamonds , aes ( x = carat , y = p r i ce ) ) + geom_ po in t ( aes (co lour = cut ) ) + geom_smooth ( se=F) #Regression f ü rGesamtheit der Punkte
Anne Kunstmann Plotten mit GGPlot2
29/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Scaling
Erstellen einer benutzerdefinierten Legende
Stetige PlotsLegendenposition theme(legend.position = ... )
„top “, „bottom“, „left “, „right “Achsenlabels
x-Achse scale_x_continuous = *y-Achse scale_y_continuous = *
* Einfügen eines Strings- Einfügen eines Zahlenwertes
Anne Kunstmann Plotten mit GGPlot2
30/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Gestaltung der Legende scale_colour_continuous()Name der Legende name = *Abschnitte der Legende breaks = c(-,-,-)Abschnittsbezeichnungen labels = c(*,*,*)Farbverlauf low = *, high = *
Erweiterung scale_colour_gradient2()dreifarbige Erweiterung low, mid, high
Anne Kunstmann Plotten mit GGPlot2
31/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Diskrete Plotsscale_colour_discrete()scale_x_discrete, scale_y_discreteidentische Funktionen
Codebeispiel 12: benutzerdefinierte Legende
1 g1 + theme ( legend . p o s i t i o n = " top " )+ scale_ co lour _cont inuous (name = " Ozonschicht " , breaks =
3 c (40 , 160) , labels = c ( " ger ing " , " hoch " ) , low = " green ", high = " blue " )
+ scale_x_cont inuous ( " Temperatur i n F" )5 + scale_y_cont inuous ( " Wind i n km/ h " )
Anne Kunstmann Plotten mit GGPlot2
32/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
5
10
15
20
60 70 80 90Temperatur in F
Wind
in km
/h
gering hochOzonschicht
zu Codebeispiel 12: Legendenerstellung
Anne Kunstmann Plotten mit GGPlot2
33/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Achsenverhältnisse
Stetige und diskrete Plotsggtitle(*) Titel des Koordinatensystemsxlab(*), ylab(*) Achsenbeschriftungxlim =(-,-), ylim =(-,-) Achsenbegrenzungcoord_cartesian() Zoom eines Achsenabschnitts
xlim = c(-,-), ylim=c(-,-), expand = T/F
Zusammenfassung labs( list( title = *, x = *, y = *))Zusammenfassung lims(x = c(-,-), y = x(-,-))
Anne Kunstmann Plotten mit GGPlot2
34/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
coord_flip() Vertauschen der Achsencoord_fixed(ratio = -) Achsenlänge im Verhältnis y
x
coord_trans(*) Achsentransformationlog2, sqrt, ...
Umkehren der x-Achsenrichtung scale_x_reverse()Umkehren der y-Achsenrichtung scale_y_reverse()keine Achsenabschnittslabels
theme(axis.ticks = element_blank(), axis.ticks.y =element_blank()
Anne Kunstmann Plotten mit GGPlot2
35/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 13: benutzerdefiniertes Koordinatensystem
1 g1 + labs ( t i t l e = "Abhä n g i g k e i t der Windstä rke " , x =" Temperatur i n F" , y = " Windstä rke i n km/ h " )
3 + l ims ( x = c (NA, 80) , y = c (5 ,20) )+ coord_ f l i p ( )
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
55
60
65
70
75
80
5 10 15 20Windstärke in km/h
Temp
eratur
in F
40
80
120
160Ozone
Abhängigkeit der Windstärke
Anne Kunstmann Plotten mit GGPlot2
36/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Facets
Splitten der Visualisierung in VariablenImplementation durch facet_grid()
Unterscheidung in horizontale oder vertikale RichtungAbhängigkeit von maximal zwei weiteren VariablenNotation horizontaler Aufbau . ~ dataNotation vertikaler Aufbau data ~.
Implementation durch facet_wrap()Eingabe der Plot-Anzahl in einer Zeile/SpalteAbhängigkeit von einer VariableNotation ~data, ncol= -/nrow= -
Anne Kunstmann Plotten mit GGPlot2
37/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 14: horizontale Anordnung
ggp lo t ( a i r q u a l i t y , aes ( x = Temp, y = Wind ) ) + geom_ po in t ( ) +geom_smooth ( ) + face t _grid ( . ~ Month )
5 6 7 8 9
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
0
5
10
15
20
25
60 70 80 90 60 70 80 90 60 70 80 90 60 70 80 90 60 70 80 90Temp
Wind
Anne Kunstmann Plotten mit GGPlot2
38/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 15: vertikale Anordnung
1 ggp lo t ( a i r q u a l i t y , aes ( x = Temp , y = Wind ) ) + geom_ po in t ( ) +geom_smooth ( ) + face t _grid ( Month ~ . )
●●
●●
●●
●
●
●
●
●
●●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●●●
●●
●● ●
●
●
●
●●
●
●
●
●
●●
●
●
●●●
●
●
●
● ●●
●●
●
●●
●●●
●
●●
●●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●●
●
●●
●
●
●●
●
●
●●●
●
●
●●
●
●
0
5
10
15
20
25
0
5
10
15
20
25
0
5
10
15
20
25
0
5
10
15
20
25
0
5
10
15
20
25
56
78
9
60 70 80 90Temp
Wind
Anne Kunstmann Plotten mit GGPlot2
39/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Diamanten unterteilt in Preis, Carat, Schliff und Farbe
Anne Kunstmann Plotten mit GGPlot2
40/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 16: 3 Plots pro Zeile
1 ggp lo t ( a i r q u a l i t y , aes ( x = Temp , y = Wind ) ) + geom_ po in t ( ) +geom_smooth ( ) + face t _wrap ( ~Month , ncol = 3)
Anne Kunstmann Plotten mit GGPlot2
41/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 17: 3 Plots pro Spalte
1 ggp lo t ( a i r q u a l i t y , aes ( x = Temp , y = Wind ) ) + geom_ po in t ( ) +geom_smooth ( ) + face t _wrap ( ~Month , nrow = 3)
Anne Kunstmann Plotten mit GGPlot2
42/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Statistische Transformation
Überschreiben des Defaults der geom-FunktionenUmgestalten der Daten
stat_smooth(), stat_bin(),...Integrieren eigener Funktionen
stat_summary(), stat_function(),...
Anne Kunstmann Plotten mit GGPlot2
43/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 18: default-Balkendiagramm
1 ggp lo t ( a i r q u a l i t y , aes ( x = Month ) ) + geom_bar ( )#Balkendiagramm f o r d e r t nur Parameter f ü r x−Achse
0
10
20
30
5 6 7 8 9Month
coun
t
Anne Kunstmann Plotten mit GGPlot2
44/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
Codebeispiel 19: Error-Funktion
ggp lo t ( a i r q u a l i t y _means , aes ( x = Month , y = meanTemp) )2 + geom_bar ( )
#Fehler be i Übergabe eines y−Parameters
default-Parameter y = countbenutzerdefinierte Eingabe des y-Parameters führtzu Übergabe zweier Werte eines Parameters
Codebeispiel 20: Änderung der statistischen Eigenschaften
1 ggp lo t ( a i r q u a l i t y _means , aes ( x = Month , y = meanTemp) )+ geom_bar ( stat = " i d e n t i t y " )
3 # s t a t = " i d e n t i t y " ermö g l i c h t das Überschre iben des y−Parameters
Anne Kunstmann Plotten mit GGPlot2
45/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Mapping vs SettingScaling und AchsenverhältnisseFacetsStatistische Transformation
0
20
40
60
80
5 6 7 8 9Month
me
an
Tem
p
zu Codebeispiel 20: Ein Balkendiagramm mit benutzerdefinierter x- und y-Achse
Anne Kunstmann Plotten mit GGPlot2
46/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Export von Plots
Export und Speicherung von PlotsImplementation über ggsave()
filename Auswahl des Namens und Formatsplot Auswahl des Plots
default Abspeichern des letzten Plots
device Angabe bei unbekanntem Formatpath Auswahl des Speicherpfads
default-Ordner „Dokumente“
scale, width, height Größenanpassungenunit Einheit der Größenanpassung (cm, inch,...)
Anne Kunstmann Plotten mit GGPlot2
47/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Codebeispiel 21: Automatische Speicherung
1 ggp lo t ( a i r q u a l i t y , aes ( x = Temp , y = Wind ) ) + geom_ po in t ( )ggsave ( " meingraph . pdf " )
3 #Abspeichern a l s PDF unter " meingraph " im Ordner " Dokumente "
Codebeispiel 19: Speicherung mit Pfadangabe
1 g1 <− ggp lo t ( a i r q u a l i t y , aes ( x = Temp , y = Wind ) )+ geom_ po in t ( )
3 g2 <− ggp lo t ( a i r q u a l i t y , aes ( x = Ozone , y = Temp) )+ geom_ po in t ( )
5 ggsave ( " meingraph . png " , g1 , path = "C : / Users /Max Mustermann /Desktop / Graphen " )
#Abspeichern des Graphen g1 a ls PNG unter " meingraph " im Ordner" Graphen "
Anne Kunstmann Plotten mit GGPlot2
48/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Zusammenfassung
essentielle FragenWelcher Art sind die Daten? stetig, diskretWomit stelle ich die Daten dar? geomWie stelle ich die Daten dar? aesPasse ich die Graphenumgebung des Plots an?coord, theme, scale, facets, ggthemeMuss ich die default-Funktion überschreiben? statWie exportiere und speichere ich Plots? ggsave
Anne Kunstmann Plotten mit GGPlot2
49/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Fragen?
Anne Kunstmann Plotten mit GGPlot2
50/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
ggtheme
Paket ggthemezusätzliche Gestaltungs- und geom-Funktionen
Funktionengeom_rangeframe() Achsenbeginn bei erstemFunktionswert, Achsenende bei letztem Wertgeom_tufteboxplot() Boxplots nach Tufte
Punkt als MedianLücken als InterquartilabstandLinien als Whiskers
Anne Kunstmann Plotten mit GGPlot2
51/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Themestheme_economist() Plots des Economist Magazinstheme_solarized() Plots der solarized Farbpalettetheme_solid() benutzerdefinierte Hintergrundfarbe
Scalesscale_colour_economist() Achsen des Economistscale_colour_solarized() Achsen der solarizedPalettescale_colour_excel() Achsen aus Excelscale_colour_colorblind() Achsen für Farbblinde
Anne Kunstmann Plotten mit GGPlot2
52/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Codebeispiel 22: Tufteboxplot samt Rangeframe-Achse
l i b r a r y ( ggthemes )2 ggp lo t ( diamonds , aes ( x = cut , y = p r i ce ) ) + geom_ t u f t e b o x p l o t ( )
+ geom_rangeframe ( )
●●
●
●
●
0
5000
10000
15000
Fair Good Very Good Premium Idealcut
pri
ce
Anne Kunstmann Plotten mit GGPlot2
53/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Codebeispiel 23: solarized-Theme mit Economist Legende und Parameter
ggp lo t ( diamonds , aes ( x = carat , y= pr ice , co lour = co lo r ) ) +geom_ po in t ( ) + theme_ s o l a r i z ed ( ) + scale_ co lour _economist (t i t l e =" Farben " )
Anne Kunstmann Plotten mit GGPlot2
54/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Codebeispiel 24: solarized Theme mit Parameter und Legende für Farbblinde
1 ggp lo t ( diamonds , aes ( x = carat , y= pr ice , co lour = co lo r ) ) +geom_ po in t ( ) + theme_ s o l a r i z ed ( l i g h t = F) + scale_ co lour _c o l o r b l i n d ( )
Anne Kunstmann Plotten mit GGPlot2
55/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Galleriecoord_polar
http://docs.ggplot2.org/current/coord_polar.html
Anne Kunstmann Plotten mit GGPlot2
56/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
geom_violin
http://docs.ggplot2.org/current/geom_violin.html
Anne Kunstmann Plotten mit GGPlot2
57/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
geom_map
http://docs.ggplot2.org/current/geom_map.html
Anne Kunstmann Plotten mit GGPlot2
58/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Export von PlotsZusammenfassungAppendix
Ein Porträt
Porträt von Hadley Wickham erstellt mit GGPlot2 von David Kahle und GarrettGrolemund
http://priceonomics.com/hadley-wickham-the-man-who-revolutionized-r/
Anne Kunstmann Plotten mit GGPlot2
59/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
Quellenverzeichnis
http://www.ggplot.org
http://www.statmethods.net/graphs/creating.html
http://www.tutorialspoint.com/r/r_pie_charts.htm
https://en.wikipedia.org/wiki/Ggplot2
http://www.sthda.com/english/wiki/ggplot2-histogram-plot-quick-start-guide-r-software-and-data-visualization
http://www.sthda.com/english/wiki/ggplot2-histogram-plot-quick-start-guide-r-software-and-data-visualization
http://ggplot2.org/book/qplot.pdf
http://varianceexplained.org/RData/lessons/lesson2/segment2/
http://www.aridhia.com/technical-tutorials/the-fundamentals-of-ggplot-explained/
http://varianceexplained.org/r/why-I-use-ggplot2/
Anne Kunstmann Plotten mit GGPlot2
60/60
EnführungPreprocessing
GrundlagenGestaltungSonstiges
https://rpubs.com/hadley/ggplot2-layers
http://www.cookbook-r.com/Graphs/Facets_%28ggplot2%29/
http://www.cookbook-r.com/Graphs/Axes_%28ggplot2%29/
http://www.cookbook-r.com/Graphs/Legends_%28ggplot2%29/
https://cran.r-project.org/web/packages/ggthemes/vignettes/ggthemes.html
http://varianceexplained.org/r/why-I-use-ggplot2/
http://tutorials.iq.harvard.edu/R/Rgraphics/Rgraphics.html
http://docs.ggplot2.org/current/coord_polar.html
http://docs.ggplot2.org/current/geom_violin.html
http://docs.ggplot2.org/current/coord_map.html
Anne Kunstmann Plotten mit GGPlot2
Top Related