+ - 0:00:00
Notes for current slide
Notes for next slide

Plotting II

Explorative Datenanalyse mit R
The R Bootcamp

Februar 2020

1 / 29

Plots anpassen

  • Kreiere und verändere ein gg Plot-Objekt.
  • Teile den Plot auf mit facets
  • Nutze themes um einzelne Aspekte des Plots zu formatieren
  • Kreiere deine eigenen themes.
  • Speichere deinen Plot als .pdf oder .png.
2 / 29

Das gg Objekt

  • Die ggplot generiert ein gg Objekt, dass gespeichert werden kann.
  • gg Objekte können durch + beliebig verändert/erweitert werden
  • Ausführen des Objekts generiert den Plot.
# Weise Plot Objekt zu
mein_plot <- ggplot(data = mpg,
aes(x = displ,y = hwy)) +
geom_point() + theme_bw()
# Zeige Klasse
class(mein_plot)
[1] "gg" "ggplot"
mein_plot

3 / 29

Das gg Objekt

  • Die ggplot generiert ein gg Objekt, dass gespeichert werden kann.
  • gg Objekte können durch + beliebig verändert/erweitert werden
  • Ausführen des Objekts generiert den Plot.
# Weise Plot Objekt zu
mein_plot <- ggplot(data = mpg,
aes(x = displ,y = hwy)) +
geom_point() + theme_bw()
# Zeige Klasse
class(mein_plot)
[1] "gg" "ggplot"
mein_plot + geom_smooth()

4 / 29

facet_*()

  • Facetting kreiert denselben Plot für Gruppen definiert durch dritte Variablen.
  • Facet Funktionen:
    • facet_wrap()
    • facet_grid()
# Ohne facetting
ggplot(data = mpg,
mapping = aes(x = displ,
y = hwy)) +
geom_point() + theme_bw()

5 / 29

facet_wrap()

  • Facetting kreiert denselben Plot für Gruppen definiert durch dritte Variablen.
  • Facet Funktionen:
    • facet_wrap()
    • facet_grid()
# Ohne facetting
ggplot(data = mpg,
mapping = aes(x = displ,
y = hwy)) +
geom_point() + theme_bw() +
facet_wrap(~ class)

6 / 29

facet_grid()

  • Facetting kreiert denselben Plot für Gruppen definiert durch dritte Variablen.
  • Facet Funktionen:
    • facet_wrap()
    • facet_grid()
# Ohne facetting
ggplot(data = mpg,
mapping = aes(x = displ,
y = hwy)) +
geom_point() + theme_bw() +
facet_grid(drv ~ class)

7 / 29

theme()

  • Passt mit den 87 Argumenten von theme() alle ästhetischen Aspekte deines Plots an.
  • Nutze hierzu vier Helferfunktionen:
    • element_rect() | für Flächen
    • element_line() | für Linien
    • element_text() | für Text
    • element_blank() | zum entfernen
# Verwendung von theme
mein_plot +
theme(argument = element_*(),
argument = element_*(),
...)

8 / 29

Hintergrund

  • Argumente für den Hintergrund:
    • panel.background | für den inneren Hintergrund
    • plot.background | für den äusseren Hintergrund
# Ändere den Hintergrund
mein_plot +
theme(
panel.background =
element_rect(fill = 'tomato'),
plot.background =
element_rect(fill = 'burlywood'))

9 / 29

Raster

  • Argumente für das Raster:
    • panel.grid.major | grössere Rasterlinien
    • panel.grid.minor | kleinere Rasterlinien
# Ändere das Raster
mein_plot +
theme(
panel.grid.major =
element_line(colour = "salmon"),
panel.grid.minor =
element_line(colour = "seagreen"))

10 / 29

Raster

  • Argumente für das Raster:
    • panel.grid.major | grössere Rasterlinien
    • panel.grid.minor | kleinere Rasterlinien
# Ändere das Raster
mein_plot +
theme(
panel.grid.major =
element_line(colour = "salmon",
size = 3),
panel.grid.minor =
element_line(colour = "seagreen",
size = 1.5))

11 / 29

Achsen

  • Argumente für die Achsen:
    • axis.line.x | x-Achse
    • axis.line.y | y-Achse
    • axis.title.x | x-Achse Titel
    • axis.title.y | y-Achse Titel
# Ändere die Achsen
mein_plot +
theme(
axis.line.x =
element_line(colour = "deeppink",
size = 3.5,
lineend = "butt"),
axis.line.y =
element_line(colour = "deeppink",
size = 3.5))

12 / 29

Achsen

  • Argumente für die Achsen:
    • axis.line.x | x-Achse
    • axis.line.y | y-Achse
    • axis.title.x | x-Achse Titel
    • axis.title.y | y-Achse Titel
# change grid line color
mein_plot +
theme(
axis.title.x =
element_text(family = "Comic Sans MS",
size = 30),
axis.title.y =
element_text(family = "Comic Sans MS",
size = 30))

13 / 29

Weitere Argumente (unvollständig)

theme()

Argument Beschreibung
axis.title.* Alles betreffend Achsentitel
axis.ticks.* Alles betreffend Achseneinteilungen
axis.line.* Alles betreffend Achsenlinien
legend.* Alles betreffend Legenden
panel.* Alles betreffend die innere Plotregion
plot.* Alles betreffend die äussere Plotregion
strip.* Alles betreffend die Facet Titel


element_rect()

Argument Beschreibung
fill Füllfarbe
colour Randfarbe

element_line()

Argument Beschreibung
size Liniengrösse
linetype Art der Linie

element_text()

Argument Beschreibung
face Schriftart
colour Schriftfarbe
14 / 29

Eigene themes

mein_theme <- theme(
panel.background =
element_rect(fill = 'tomato'),
plot.background =
element_rect(fill = 'burlywood'),
panel.grid.major = element_line(
colour = "salmon", size = 3),
panel.grid.minor = element_line(
colour = "seagreen", size = 1.5),
axis.line.x = element_line(
colour = "deeppink", size = 3.5,
lineend = "butt"),
axis.line.y = element_line(
colour = "deeppink", size = 3.5),
axis.title.x = element_text(
family = "Comic Sans MS", size = 30),
axis.title.y = element_text(
family = "Comic Sans MS", size = 30))
mein_plot

15 / 29

Eigene themes

mein_theme <- theme(
panel.background =
element_rect(fill = 'tomato'),
plot.background =
element_rect(fill = 'burlywood'),
panel.grid.major = element_line(
colour = "salmon", size = 3),
panel.grid.minor = element_line(
colour = "seagreen", size = 1.5),
axis.line.x = element_line(
colour = "deeppink", size = 3.5,
lineend = "butt"),
axis.line.y = element_line(
colour = "deeppink", size = 3.5),
axis.title.x = element_text(
family = "Comic Sans MS", size = 30),
axis.title.y = element_text(
family = "Comic Sans MS", size = 30))
mein_plot + mein_theme

16 / 29

scale_*()

  • Mit scale_*() Funktionen lassen sich alle möglichen Längen/Grössen skalieren.
  • Klassen von scale_*() Funktionen:
    • scale_xy_* | Skaliere Achsen
    • scale_color_*, scale_color_* | Skaliere Farben
    • scale_size_* | Skaliere Groessen
    • scale_alpha_* | Skaliere Transparenzen
    • ...
mein_plot

17 / 29

scale_x_continuous()

  • Mit scales_*() Funktionen lassen alle möglichen Längen/Grössen skalieren.
  • Klassen von scales_*() Funktionen:
    • scale_xy_* | Skaliere Achsen
    • scale_color_*, scale_color_* | Skaliere Farben
    • scale_size_* | Skaliere Groessen
    • scale_alpha_* | Skaliere Transparenzen
    • ...
mein_plot +
scale_x_continuous(limits = c(1, 30))

18 / 29

scale_x_reverse()

  • Mit scales_*() Funktionen lassen alle möglichen Längen/Grössen skalieren.
  • Klassen von scales_*() Funktionen:
    • scale_xy_* | Skaliere Achsen
    • scale_color_*, scale_color_* | Skaliere Farben
    • scale_size_* | Skaliere Groessen
    • scale_alpha_* | Skaliere Transparenzen
    • ...
mein_plot +
scale_x_reverse()

19 / 29

scale_color_hue()

  • Mit scales_*() Funktionen lassen alle möglichen Längen/Grössen skalieren.
  • Klassen von scales_*() Funktionen:
    • scale_xy_* | Skaliere Achsen
    • scale_color_*, scale_color_* | Skaliere Farben
    • scale_size_* | Skaliere Groessen
    • scale_alpha_* | Skaliere Transparenzen
    • ...
mein_plot +
scale_colour_hue(h = c(160, 260))

20 / 29

scale_size()

  • Mit scales_*() Funktionen lassen alle möglichen Längen/Grössen skalieren.
  • Klassen von scales_*() Funktionen:
    • scale_xy_* | Skaliere Achsen
    • scale_color_*, scale_color_* | Skaliere Farben
    • scale_size_* | Skaliere Groessen
    • scale_alpha_* | Skaliere Transparenzen
    • ...
mein_plot +
scale_size(range = c(1, 15))

21 / 29

Multiple Plots

  • Das patchwork Paket liefert eine einfache Syntax um Plots zu verknüpfen.
  • patchwork Syntax:
    • + | generisch zusammefügen
    • | | nebeneinander stellen
    • / | untereinander stellen
    • () | zusammenfassen
    • & | auf alle anwenden


# Speichere plots
schoen <- mein_plot
unschoen <- mein_plot + mein_theme
schoen + unschoen

22 / 29

Multiple Plots

  • Das patchwork Paket liefert eine einfache Syntax um Plots zu verknüpfen.
  • patchwork Syntax:
    • + | generisch zusammefügen
    • | | nebeneinander stellen
    • / | untereinander stellen
    • () | zusammenfassen
    • & | auf alle anwenden


# Speichere plots
schoen <- mein_plot
unschoen <- mein_plot + mein_theme
schoen | unschoen + schoen

23 / 29

Multiple Plots

  • Das patchwork Paket liefert eine einfache Syntax um Plots zu verknüpfen.
  • patchwork Syntax:
    • + | generisch zusammefügen
    • | | nebeneinander stellen
    • / | untereinander stellen
    • () | zusammenfassen
    • & | auf alle anwenden


# Speichere plots
schoen <- mein_plot
unschoen <- mein_plot + mein_theme
(schoen+schoen) / (schoen+schoen)

24 / 29

Multiple Plots

  • Das patchwork Paket liefert eine einfache Syntax um Plots zu verknüpfen.
  • patchwork Syntax:
    • + | generisch zusammefügen
    • | | nebeneinander stellen
    • / | untereinander stellen
    • () | zusammenfassen
    • & | auf alle anwenden


# Speichere plots
schoen <- mein_plot
unschoen <- mein_plot + mein_theme
(schoen+schoen) / (schoen+schoen) &
mein_theme

25 / 29

Multiple Plots

  • Das patchwork Paket liefert eine einfache Syntax um Plots zu verknüpfen.
  • patchwork Syntax:
    • + | generisch zusammefügen
    • | | nebeneinander stellen
    • / | untereinander stellen
    • () | zusammenfassen
    • & | auf alle anwenden


# Speichere plots
schoen <- mein_plot
unschoen <- mein_plot + mein_theme
(schoen+schoen) / (schoen+schoen) +
plot_annotation(tag_levels = "A") &
theme(legend.position = "none")

26 / 29

ggsave()

  • Kreiere Bilddateien mit ggsave().
  • ggsave Argumente:
    • filename | Dateipfad
    • device | z.B. ".pdf" oder ".png"
    • path | Pfad zum Ordneer
    • height, width | Höhe, Breite
    • unit | Einheit für Höhe, Breite
    • dpi | Auflösung pro Einheit
# Kreiere meinen Plot
mein_plot <- ggplot(data = mpg,
aes(x = displ, y = hwy)) +
geom_point() +
mytheme
# Kreiere "mein_plot.pdf"
ggsave(filename = "mein_plot",
plot = mein_plot,
device = "pdf",
path = "figures",
width = 6,
height = 4)
27 / 29

ggsave()

  • Kreiere Bilddateien mit ggsave().
  • ggsave Argumente:
    • filename | Dateipfad
    • device | z.B. ".pdf" oder ".png"
    • path | Pfad zum Ordneer
    • height, width | Höhe, Breite
    • unit | Einheit für Höhe, Breite
    • dpi | Auflösung pro Einheit
# Kreiere meinen Plot
mein_plot <- ggplot(data = mpg,
aes(x = displ, y = hwy)) +
geom_point() +
mytheme
# Kreiere "mein_plot.png"
ggsave(filename = "mein_plot",
plot = mein_plot,
device = "png",
path = "figures",
width = 6,
height = 4)
28 / 29

Plots anpassen

  • Kreiere und verändere ein gg Plot-Objekt.
  • Teile den Plot auf mit facets
  • Nutze themes um einzelne Aspekte des Plots zu formatieren
  • Kreiere deine eigenen themes.
  • Speichere deinen Plot als .pdf oder .png.
2 / 29
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow