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?
<- tibble(
df 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.
geom_text()
, um Text in jede Ecke dieser Grafik zu
zeichnen.<- tibble(
label 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.<- tibble(
label 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.<- mpg %>%
eff 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)
<- eff %>%
label 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
.