Erstellen Sie eine beliebige Grafik des diamonds
Datensatzes und fügen Sie der Grafik einen Überschrift
(title), einen Untertitel (subtitle), eine
“Unterschrift” (caption) und Beschriftungen der x-und
y-Achse (x und y) sowie ein Farblabel
bei.
Verwenden Sie geom_text(), um Text in jede Ecke
dieser Grafik zu zeichnen.
Schauen Sie in die Beispiele der ?annotate()
Funktion und fügen Sie mit Hilfe dieser Text in eine Grafik ein ohne
vorher einen zusätzlichen tibble zu erstellen.
Erstellen Sie ein Streudiagramm von displ und
hwy des mpg Datensatzes.
Filtern Sie zusätzlich für jeden Autotyp class nach
dem effizientesten Auto.
Markieren Sie diese Autos farblich anders als den Rest.
Fügen Sie mit geom_segment und arrow()
Pfeile in die Grafik ein, die auf die Punkte zeigen.
Fügen Sie zusätzlich Label an das Ende der Pfeile ein, die das Automodell beschreiben.
Fügen Sie schlussendlich der Grafik aussagekräftige Beschriftungen, usw. bei.
Warum funktioniert der folgende Befehl nicht?
df <- tibble(
x = rnorm(10000),
y = rnorm(10000)
)
ggplot(df, aes(x, y)) +
geom_hex() +
scale_color_gradient(low = "white", high = "red") +
coord_fixed()6. Überschreiben Sie die Aesthetics in dem folgenden Befehl, um die Legende anschaulicher zu machen.
ggplot(diamonds, aes(carat, price)) +
geom_point(aes(colour = cut), alpha = 1/20)Sepal.Width und
Sepal.Length des iris Datensatzes.
Färben Sie die Punkte gemäß der Spezies ein.
Fügen Sie Linien für jede Spezies hinzu und ändern Sie die
linetype.
Markieren Sie die kleinste und größte Pflanze jeder Spezies mit Pfeilen und Label.
Beschriften Sie die Legende, Achsen und Titel sinnvoll.
diamonds Datensatzes und fügen Sie der
Grafik einen Überschrift (title), einen Untertitel
(subtitle), eine “Unterschrift” (caption) und
Beschriftungen der x-und y-Achse (x und y)
sowie ein Farblabel bei.Im folgenden Beispiel sehen wir die x-und
y-Werte der Diamanten, wobei Farbgradienten und Achsen
angepasst wurden:
library(viridis)
ggplot(diamonds, aes(x, y)) +
geom_hex() +
scale_fill_viridis(begin = 0.4, end = 0.8, option = "A") +
scale_x_continuous(breaks = seq(3, 15, 3), limits = c(3, 12), name = "y-Dimension") +
scale_y_continuous(breaks = seq(3, 12, 3), limits = c(3, 12), name = "x-Dimension") +
labs(caption = "Vergrößerte Ansicht",
title = "Die meisten Diamanten weisen einen x-und y-Werte zwischen 3 und 12 auf",
subtitle = "Besonders interessant ist der scheinbar lineare Zusammenhang",
fill = "Anzahl")geom_text(), um Text in jede Ecke dieser Grafik zu
zeichnen.label <- tibble(
x = c(Inf, Inf, -Inf, -Inf),
y = c(Inf, -Inf, Inf, -Inf),
label = c("RO", "RU", "LO", "LU"),
vjust = c("top", "bottom", "top", "bottom"),
hjust = c("right", "right", "left", "left")
)
ggplot(diamonds, aes(x, y)) +
geom_hex() +
scale_fill_viridis(begin = 0.4, end = 0.8, option = "A") +
scale_x_continuous(breaks = seq(3, 15, 3), limits = c(3, 12), name = "y-Dimension") +
scale_y_continuous(breaks = seq(3, 12, 3), limits = c(3, 12), name = "x-Dimension") +
labs(caption = "Vergrößerte Ansicht",
title = "Die meisten Diamanten weisen einen x-und y-Werte zwischen 3 und 12 auf",
subtitle = "Besonders interessant ist der scheinbar lineare Zusammenhang",
fill = "Anzahl") +
geom_text(data = label, mapping = aes(label = label, vjust = vjust, hjust = hjust))?annotate() Funktion und fügen Sie mit Hilfe
dieser Text in eine Grafik ein ohne vorher einen zusätzlichen
tibble zu erstellen.label <- tibble(
x = c(Inf, Inf, -Inf, -Inf),
y = c(Inf, -Inf, Inf, -Inf),
label = c("RO", "RU", "LO", "LU"),
vjust = c("top", "bottom", "top", "bottom"),
hjust = c("right", "right", "left", "left")
)
ggplot(diamonds, aes(x, y)) +
geom_hex() +
scale_fill_viridis(begin = 0.4, end = 0.8, option = "A") +
scale_x_continuous(breaks = seq(3, 15, 3), limits = c(3, 12), name = "y-Dimension") +
scale_y_continuous(breaks = seq(3, 12, 3), limits = c(3, 12), name = "x-Dimension") +
labs(caption = "Vergrößerte Ansicht",
title = "Die meisten Diamanten weisen einen x-und y-Werte zwischen 3 und 12 auf",
subtitle = "Besonders interessant ist der scheinbar lineare Zusammenhang",
fill = "Anzahl") +
geom_text(data = label, mapping = aes(label = label, vjust = vjust, hjust = hjust)) +
annotate("text", x = 7.5, y = 7.5, label = "Mittelpunkt")displ und hwy des
mpg Datensatzes.ggplot(mpg, aes(displ, hwy)) +
geom_point()class nach dem effizientesten
Auto.eff <- mpg %>%
group_by(class) %>%
slice_max(hwy)ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_point(data = eff, color = "red")geom_segment und arrow() Pfeile in die Grafik
ein, die auf die Punkte zeigen.ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_point(data = eff, color = "red") +
geom_segment(data = eff, mapping = aes(xend = displ + 0.3, yend = hwy + 1),
arrow = arrow(ends = "first", length = unit(0.1, "in"), type = "closed"))# Zuerst muss definiert werden, wo die Label stehen sollen (z.B. am Ende der Pfeile)
label <- eff %>%
mutate(hwy = hwy + 1.5,
displ = displ + 0.6)
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_point(data = eff, color = "red") +
geom_segment(data = eff, mapping = aes(xend = displ + 0.3, yend = hwy + 1),
arrow = arrow(ends = "first", length = unit(0.1, "in"), type = "closed")) +
geom_text(data = label, mapping = aes(label = model))Hierbei überlappen sich die Label im oberen Bereich. Stattdessen kann
auch geom_label_repel() aus ggrepel verwendet
werden.
library(ggrepel)
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_point(data = eff, color = "black") +
geom_label_repel(data = eff, aes(label = model),
arrow = arrow(length = unit(0.02, "npc")),
box.padding = 1, point.padding = 1
)In diesem Fall wurde die Legende noch unter die Grafik geschoben und die Transparenz angepast.
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class), alpha = 0.4) +
geom_point(data = eff, color = "black", alpha = 0.4) +
geom_label_repel(data = eff, aes(label = model),
arrow = arrow(length = unit(0.02, "npc")),
box.padding = 1, point.padding = 1
) +
labs(x = "Hubraum (l)",
y = "Kraftstoffverbrauch (Gallone pro Meile)",
title = "Kraftstoffeffizienz fällt tendenziell mit steigendem Hubraum",
subtitle = "Von jeder Autoklasse wurden die effizientesten Autos markiert") +
guides(colour = guide_legend(nrow = 1, override.aes = list(size = 3, alpha = 1))) +
theme(legend.position = "bottom")Bei dem Befehl wurde als Aesthetic color angegeben an
Stelle von fill, sodass die Füllfarbe nicht verändert
wurde. Wenn color durch fill in der Skalierung
angepasst wird, funktioniert der Befehl wie erwartet:
Durch das Setzen des alpha-Werts der Aesthetic sind die
Punkte in der Legende ebenfalls transparent. Durch das Überschreiben der
Legende durch guides() und dem Argument colour
sowie override.aes lassen sich die Änderungen in der Grafik
für die Legende anderweitig überschreiben (z. B. mit
alpha = 1):
Sepal.Width und Sepal.Length
des iris Datensatzes.linetype.