--- title: "Layout-Fragen" # Titel der Seite weight: 201 # Individuelles Gewicht menuTitle: "Layout" # Falls Titel zulang ist, hier Kurztitel tags: ["ggplot", "layout", "advanced"] # Tags hiereinsetzen; Kurzwort, was auf der Seite passsiert ---
Innerhalb eines ggplots können nahezu alle dargestellten Teilbereiche verändert und angepasst werden. Einige dieser Änderungen werden wie im nachfolgenden besprechen.
Dazu schaffen wir uns zuerst nochmal ein ggplot-Objekt mit unserem Scatterplot aus der Einführung in ggplot:
scatter <- ggplot(
pss,
aes(
stfeco,
stfdem
)
) +
geom_jitter(
alpha = .2,
col = "blue"
) +
scale_x_continuous(
breaks = seq(
0,
10,
1
)
) +
scale_y_continuous(
breaks = seq(
0,
10,
1
)
)
scatter
## Warning: Removed 96 rows containing missing values (geom_point).

Zuerst fügen wir nochmals Titel, Achsenbeschriftung und Quellen hinzu.
scatterLeg <- scatter +
labs(
x = "Satisfaction with Economy",
y = "Satisfaction with Democracy",
title = "Correlation Plot",
caption = "Data: Panem Social Survey.\n Data jittered."
)
scatterLeg
## Warning: Removed 96 rows containing missing values (geom_point).

Innerhalb der Funktion theme() können wir Teilbereiche des Plots ansprechen und ändern. Dies umfasst u.a. folgende Eigenschaften des Plots:
plot.titleaxis.title.x / axis.title.yaxis.text.x / axis.text.ypanel.grid / panel.grid.minor / panel.grid.majorplot.background / panel.background{{% notice tip %}}
Eine komplette Übersicht aller Einstellungen die in theme() genutzt werden können findet sich in der
User-Dokumentation.
{{% /notice %}}
Wir werden jetzt nach und nach Veränderungen vornehmen. Zuerst werden wir die Schriftgröße, Position und das Erscheinungsbild des Titels ändern. Dies machen wir über plot.title in theme(). Dazu verwenden wir die Funktion element_text():
scatterLeg +
theme(
plot.title = element_text(
size = 25,
face = "italic",
hjust = 0.5
)
)
## Warning: Removed 96 rows containing missing values (geom_point).

Dazu haben wir die drei Argumente size (Schriftgröße), face (Erscheinungsbild) und hjust (Position) genutzt.
Als nächstes wollen wir die Achsentitel bearbeiten.
scatterAxes <- scatterLeg +
theme(
plot.title = element_text(
size = 25,
face = "italic",
hjust = 0.5
),
axis.title.x = element_text(
size = 16,
color = "seagreen",
hjust = 0
),
axis.title.y = element_text(
size = 8,
color = rgb(
0,
105,
179,
maxColorValue = 255
),
hjust = 1,
face = "bold"
)
)
scatterAxes
## Warning: Removed 96 rows containing missing values (geom_point).

Anstatt eine Farbe anzugeben, kann man mit der Funktion rgb() auch den Farbton bestimmen. Alternativ kann man auch den HTML-Code der Farbe innerhalb des Arguments color nutzen.
scatterLeg +
theme(
plot.title = element_text(
size = 25,
face = "italic",
hjust = 0.5
),
axis.title.x = element_text(
size = 16,
color = "seagreen",
hjust = 0
),
axis.title.y = element_text(
size = 8,
color = "#0069B3",
hjust = 1,
face = "bold"
)
)
## Warning: Removed 96 rows containing missing values (geom_point).

Nun möchten wir weiter experimentieren und die Achsenticks bearbeiten. Dazu nutzen wir axis.ticks.x bzw. axis.ticks.y.
scatterTicks <- scatterAxes +
theme(
axis.text.x = element_text(
size = 12,
angle = 45,
color = "darkgrey"
),
axis.text.y = element_text(
size = 11,
hjust = 0,
vjust = 1
)
)
scatterTicks
## Warning: Removed 96 rows containing missing values (geom_point).

Mit dem Argument angle können wir die Achsenbeschriftungen drehen lassen. Mit hjust und vjust können wir die Startposition des Texts ändern.
Als nächstes möchten wir das Grid des Plots ändern, also die Linien. Dazu nutzen wir erstmal das Argument panel.grid und innerhalb des Arguments die Funktion element_line()
scatterGrid <- scatterTicks +
theme(
panel.grid = element_line(
color = "green",
size = 1,
linetype = "solid" # blank, solid, dashed, dotted, dotdash, longdash, twodash
)
)
scatterGrid
## Warning: Removed 96 rows containing missing values (geom_point).

Mit den Argumenten panel.grid.major und panel.grid.minor können die Haupt- und Hilfslinien getrennt bearbeitet werden. Wenn wir zum Beispiel nur die Hauptlinien wollen, machen wir folgendes:
scatterGrid <- scatterTicks +
theme(
panel.grid.major = element_line(
color = "green",
size = 1,
linetype = "solid" # blank, solid, dashed, dotted, dotdash, longdash, twodash
),
panel.grid.minor = element_blank()
)
scatterGrid
## Warning: Removed 96 rows containing missing values (geom_point).

Man kann auch die Hilfslinien getrennt nach Achsen bearbeiten. Dazu muss man einfach jeweils .x bzw. .y beifügen.
Zuletzt kann man noch den Hintergrund des Plots bzw. des Panels ändern. Dies geschieht über die Argumente plot.background bzw. panel.background. Dazu nutzt man die Funktion element_rect() innerhalb des Arguments
scatterGrid +
theme(
plot.background = element_rect(
color ="darkgray",
size = 2,
fill = "lightpink"
),
panel.background = element_rect(
fill = "moccasin"
)
)
## Warning: Removed 96 rows containing missing values (geom_point).

Es gibt ebenso eine ganze Reihe an vorgefertigten Themes, die dann wiederum individuell angepasst werden können.
{{% notice tip %}} Eine Übersicht über vorhandene Themes gibt es hier. {{% /notice %}}