Zuerst müssen einige Bibliotheken installiert und geladen werden:
install.packages(c("ggrepel", "viridis"))
library(ggrepel)
library(viridis)
library(tidyverse)
Der nächste Schritt nach dem Erlenen der Grundlagen von Datenvisualisierung und Datentransformation ist die Vorstellung und Kommunikation von Ergebnissen.
Um die eigenen Daten und Schlussfolgerungen einfach zugänglich und verständlich darzustellen, wollen wir an dieser Stelle den Fokus auf die Kommunikation legen.
Beschriftungen der Achsen sowie Titel können helfen, direkt den Kontext einer Grafik bezüglich eines Themas oder einer Fragestellung zu erkennen.
Anstelle von “Ein Streudiagramm von X und Y” ist es sinnvoll, die Hauptresultate oder Zusammenhänge zu beschreiben:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_smooth(se = FALSE) +
labs(title = "Kraftstoffeffizienz sinkt tendenziell mit steigender Motorgröße")
Der Parameter title
in labs()
setzt hierbei
den Text des Titels.
Zwei weitere Beschriftigungen sind möglich:
subtitle
: Zusätzliche Details (in kleinerer
Schriftfont) unter dem Titel
caption
: Text unten rechts unter der Grafik; wird
häufig für die Beschreibung der Datengrundlage genutzt
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_smooth(se = FALSE) +
labs(title = "Kraftstoffeffizienz sinkt tendenziell mit steigender Motorgröße",
subtitle = "Zweisitzer (Sportwagen) sind auf Grund ihres geringen Gewichts eine Ausnahme",
caption = "Daten von fueleconomy.gov"
)
Desweiteren lassen sich in labs()
die Beschriftungen von
Aesthetics verändern wie z. B die Achsen x
und
y
:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_smooth(se = FALSE) +
labs(title = "Kraftstoffeffizienz sinkt tendenziell mit steigender Motorgröße",
subtitle = "Zweisitzer (Sportwagen) sind auf Grund ihres geringen Gewichts eine Ausnahme",
caption = "Daten von fueleconomy.gov",
x = "Hubraum (in Liter)",
y = "Kraftstoffeffizienz (Autobahnmeilen pro Gallone)",
colour = "Antriebstyp"
)
Desweiteren lassen sich auch Formeln o. ä. durch quote()
verwenden. Siehe hierfür ?plotmath
.
Um unter Windows weitere Fontarten verwenden zu können, müssen diese Fonts zunächst in R geladen werden.
Hierzu wird die Bibliothek extrafont
verwendet, damit
neben den Standardfonts auch weitere Fontarten importiert werden
können:
#Standardfonts:
windowsFonts()
Die Installation von extrafont
läuft wie üblich ab:
install.packages("extrafont")
Nun müssen Sie Rtools
installieren gefolgt von den R Bibliotheken remotes
und
RTTf2pt1
:
install.packages("remotes")
::install_version("Rttf2pt1", version = "1.3.8") remotes
Dann können Sie die Windowsfonts importieren. Das kann ein paar Minuten dauern, muss aber nur einmal durchgeführt werden:
::font_import() extrafont
In den nächsten Sessions können die Fonts mit den folgenden Befehl geladen:
library(extrafont)
loadfonts(device = "win")
Nun sollten Sie weitere Fonts sehen:
windowsFonts()
Hinweis: Arial ist unter der Fontfamilie Arial
erhältlich und unterscheidet sich nur minimal von der Standardfont von R
(meistens sans
).
Die Fontart und Fontgröße einer Grafik lässt sich in
ggplot
unter
theme(text = element_text(family = "Fontart", size = Größe))
anpassen:
ggplot(mpg) +
geom_point(aes(displ, hwy)) +
labs(title = "Kraftstoffeffizienz sinkt tendenziell mit steigender Motorgröße",
x = "Hubraum",
y= "Kraftstoffeffizienz") +
theme(text = element_text(size = 11, family = "Arial"))
In der Grafikanzeige wird durch text = element_text()
das interne Objekt für den Text mit den gewünschten Eigenschaften
(Fontfamilie und Fontgröße) für den gesamten Text der Grafik
angepasst.
In ?theme()
können Sie nachschlagen, wie Sie die
einzelnen Achsen, Titel, usw. separat anpassen können. In jedem Fall
muss als Parameter ein element_text()
Objekt gesetzt
werden.
Im Folgenden eine kleine Übersicht:
text
: gesamter Text der Grafik
axis.title
: Titel der Achsen
(Achsenbeschriftungen)
axis.text
: Einheiten der Achsen
legend.text
: gesamter Text der Legende
plot.title
: Titel der Grafik
plot.subtitle
: Untertitel der Grafik (unterhalb der
Grafik)
plot.caption
: Unterschrift der Grafik (unterhalb des
Titels)
Alle Textelemente lassen sich auch separat anpassen (z. B. durch
axis.title.x
und axis.title.y
).
Manchmal ist es beispielsweise sinnvoll, Titel und Achsenbeschriftungen größer darzustellen und die Einheiten der Achsen etwas kleiner:
ggplot(mpg) +
geom_point(aes(displ, hwy)) +
labs(title = "Kraftstoffeffizienz sinkt tendenziell mit steigender Motorgröße",
x = "Hubraum",
y = "Kraftstoffeffizienz") +
theme(axis.title = element_text(size = 12, family = "Arial"),
plot.title = element_text(size = 15, family = "Arial"),
axis.text = element_text(size = 8, family = "Arial"))
Oder in manchen Grafiken sind die Einheiten standardmäßig zu klein:
ggplot(mpg) +
geom_point(aes(displ, hwy)) +
labs(title = "Kraftstoffeffizienz sinkt tendenziell mit steigender Motorgröße",
x = "Hubraum",
y = "Kraftstoffeffizienz") +
theme(axis.text = element_text(size = 14, family = "Arial"))
Es lassen sich in element_text()
auch weitere Parameter
wie z. B. die Farbe oder die Ausrichtung verändern, sodass jedes Element
(Achse, Titel, Legenden, usw.) bei Bedarf separat angepasst werden
kann:
ggplot(mpg) +
geom_point(aes(displ, hwy)) +
labs(title = "Kraftstoffeffizienz sinkt tendenziell mit steigender Motorgröße",
x = "Hubraum",
y = "Kraftstoffeffizienz") +
theme(axis.text = element_text(size = 10, family = "Serif", color = "red", angle = 90),
axis.title = element_text(size = 14, family = "Arial Black", color = "blue"),
plot.title = element_text(size = 20, family = "Times New Roman", face = "bold"))
Ebenfalls können Textbeschriftungen direkt in die Grafik
eingezeichnet werden. Hierzu wird geom_text()
verwendet
werden, welches ähnlich zu geom_point()
funktioniert,
allerdings mit der Aesthetic label
den Text einfügt.
Ein einfaches Beispiel, wo Beschriftungen eingefügt werden, ist das
Filtern eines tibbles
, der dann anschließend über die
Grafik gezeichnet wird:
<- mpg %>%
effizientestes_in_gruppe group_by(class) %>%
filter(row_number(desc(hwy)) == 1)
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_text(aes(label = model), data = effizientestes_in_gruppe)
Da die Label und die Punkte überlappen, wirkt die Grafik sehr unübersichtlich. Zusätzlich können sich Label gegenseitig überdecken (siehe oben links).
Mit ein paar Anpassungen (geom_label()
und
nudge_y)
kann die Grafik ein wenig verbessert werden:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_label(aes(label = model), data = effizientestes_in_gruppe, nudge_y = 2, alpha = 0.5)
Es wäre allerdings wünschenswert, dass es zu keinen Überlappungen
kommt. Hierfür gibt es die Bibliothek ggrepel
, welche die
Label automatisch gut sichtbar platziert:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
::geom_label_repel(aes(label = model), data = effizientestes_in_gruppe) ggrepel
Um die Punkte zusätzlich hervorzuheben, können auch dessen Aesthetics ein wenig angepasst werden:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
geom_point(size = 2, shape = 5, data = effizientestes_in_gruppe) +
::geom_label_repel(aes(label = model), data = effizientestes_in_gruppe) ggrepel
Nun lassen sich aus der Grafik die wichtigsten Punkte direkt einsehen. Betrachten wir die Grafik zuletzt noch mit allen Beschriftungen:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
geom_point(size = 2, shape = 5, data = effizientestes_in_gruppe) +
::geom_label_repel(aes(label = model), data = effizientestes_in_gruppe) +
ggrepellabs(x = "Hubraum (in Liter)",
y = "Kraftstoffeffizienz (Autobahnmeilen pro Gallone)",
colour = "Antriebstyp",
title = "Kraftstoffeffizienz sinkt tendenziell mit steigender Motorgröße",
subtitle = "Die effizientesten Autos sind für jeden Antriebstyp markiert",
caption = "Daten von fueleconomy.gov"
+
) theme(legend.text = element_text(size = 8))
Der Befehl für die Erstellung wirkt zunächst etwas lang, jedoch lässt sich diese Grafik Schritt für Schritt mit den Label und zusätzlichen Informationen ergänzen, sodass die Grafik mit ihrer Aussagekraft ebenso Stück für Stück wächst, wobei jeder einzelne Schritt nachvollziehbar ist.
Ein weiteres Beispiel, um die Mediane der Punkte mit einem Label zu versehen:
# Median für jeden Autotypen
<- mpg %>%
klassen_durchschnitt group_by(class) %>%
summarise(
displ = median(displ),
hwy = median(hwy)
)# Label für die Mediane einfügen mit geom_label_repel
ggplot(mpg, aes(displ, hwy, colour = class)) +
::geom_label_repel(aes(label = class),
ggrepeldata = klassen_durchschnitt,
size = 4,
label.size = 0
+
) geom_point()
Zuerst wird klassen_durchschnitt
erstellt, welcher durch
group_by()
und summarise()
die Mediane aller
Gruppen für displ
und hwy
umfasst. Dann werden
die Label an der Stelle der Mediane eingefügt.
Der Befehl theme(legend.position = "none")
entfernt
hierbei die Legende.
Hilfreich bei dem Einfügen von Text direkt in die Grafik ist die
summarise()
Funktion, welche z. B. maximale oder minimale
Werte berechnen kann. Das Problem ist hierbei, dass die Daten für die
Grafiken immer Dataframes sein müssen, sodass immer ein Dataframe
erstellt werden muss:
# Das Label hat dieselben x und y-Werte wie die folgende Grafik (bzw. sitzt durch max oben rechts)
<- mpg %>%
label summarise(
displ = max(displ),
hwy = max(hwy),
label = "Steigende Motorgröße geht mit\n verringerter Kraftstoffeffizienz einher."
)# Label durch geom_text einfügen
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_text(aes(label = label), data = label, vjust = "top", hjust = "right")
Um den Text direkt an den Rand zu schieben, können als Positionen
Inf
oder auch -Inf
verwendet werden:
<- tibble(
label displ = Inf,
hwy = Inf,
label = "Steigende Motorgröße geht mit\n verringerter Kraftstoffeffizienz einher."
)
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_text(aes(label = label), data = label, vjust = "top", hjust = "right")
Hinweis: hjust
und vjust
geben an, wie der
Text an seiner Position verschoben wird. Testen Sie einfach verschiedene
Parameter und schauen Sie, was passiert:
Weitere interessante Annotationsmöglichkeiten sind die folgenden:
geom_hline()
und geom_vline()
für horizontale und vertikale Linien.
geom_rect()
für Rechtecke (um Punkte) mit Hilfe der Randkoordinaten
xmin
, xmax
, ymin
und
ymax
.
geom_segment()
mit dem Argument arrow
, um Pfeile auf Punkte zu zeichnen
(Hervorhebung).
Mit Geduld und Kreativität lassen sich so Grafiken deutlich interessanter und informativer gestalten!
ggplot2
setzt die Achsenskalierung automatisch, um die
gesamten Daten darzustellen. So skaliert ggplot
die Daten
direkt auf Grundlage des Datentyps und der Spannweite.
In manchen Fällen kann es sinnvoll sein, die Skalen selbständig zu definieren:
Die Beschriftungen und Abstände der Skalierungen ändern
Eine andere Skalierungsart auswählen
Die folgenden Skalierungen führt ggplot2
in dem Beispiel
selbständig durch:
# Die Grafiken sind gleich
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class))
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
scale_x_continuous() +
scale_y_continuous() +
scale_colour_discrete()
Die Funktionen zum Skalieren fangen immer mit scale_
an,
dann dem Namen der Aesthetic und schließlich _
und dem
Skalierungstypen. Ein Beispiel wäre also
scale_colour_discrete()
, welches die Aesthetic
colour
diskret skaliert.
Um die Skalen der Achsen zu verändern werden die zwei Argumente
breaks
und labels
verwendet:
breaks
gibt die Position der Einträge auf den Achsen
an
labels
gibt die Namen (Text) der Einträge auf den
Achsen an
Im Folgenden wird nun also die y-Achse so angepasst, dass von 15 bis 40 die Werte in 4er bzw. 5er Schritten angegeben werden:
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
scale_y_continuous(breaks = seq(15, 40, by = 4))
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
scale_y_continuous(breaks = seq(15, 40, by = 5))
labels
lässt sich genauso benutzen wie
breaks
(als Vektor von Namen). Zusätzlich können die
Beschriftungen auch entfernt werden, indem labels = NULL
gesetzt wird:
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
scale_x_continuous(labels = NULL) +
scale_y_continuous(labels = NULL)
In manchen Fällen wird es notwendig, die Achsen anzupassen, insbesondere wenn bestimmte Punkte hervorgehoben werden sollen.
In dem folgenden Beispiel werden Präsidentschaftszeiten aufgezeigt. Hierbei wäre es natürlich interessant, direkt zu sehen, in welchem exakten Zeitraum eine Regierungsperiode war:
%>%
presidential mutate(id = 33 + row_number()) %>%
ggplot(aes(start, id)) +
geom_point() +
geom_segment(aes(xend = end, yend = id))
Das lässt sich ebenfalls über die breaks
und
labels
der Achsen einstellen. Da es sich hierbei um Daten
handelt und keine Zahlen, verhält sich die zugehörige Funktion
scale_x_date
etwas anders. Für weitere Information hierzu,
lesen Sie hier
nach.
%>%
presidential mutate(id = 33 + row_number()) %>%
ggplot(aes(start, id)) +
geom_point() +
geom_segment(aes(xend = end, yend = id)) +
scale_x_date(NULL, breaks = presidential$start, date_labels = "'%y")
Eine weitere Möglichkeit, um eine Grafik anschaulicher zu machen,
sind Legenden. Diese werden von ggplot
direkt hinzugefügt,
aber können unter Umständen nicht aussagekräftig genug sein oder dessen
Aussehen nicht direkt Ihren Vorstellungen entsprechen.
Die Legende wird über theme()
verändert. Um
beispielsweise die Position zu verändern, wird das Argument
legend.position
herangezogen (wie bereits vorher einmal
angedeutet):
<- ggplot(mpg, aes(displ, hwy)) +
base geom_point(aes(colour = class))
+ theme(legend.position = "left") base
+ theme(legend.position = "top") base
+ theme(legend.position = "bottom") base
+ theme(legend.position = "right") # the default base
Ebenfalls kann die Legende mit legend.position = "none"
entfernt werden.
Um die Darstellung der Legende zu ändern, werden
guides()
, guide_legend()
und
guide_colourbar()
verwendet. Im folgenden Beispiel wird die
Legende nach unten verschoben durch legend.position
und
durch nrow
die Einträge auf eine Reihe verteilt. Zusätzlich
wird eine Aesthetic überschrieben, sodass die Punkte (in der Legende)
größer werden:
# Ohne Anpassung hat die Legende mehrere Reihen:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
geom_smooth(se = FALSE) +
theme(legend.position = "bottom")
# Mit Anpassung erhalten wir eine Reihe, wobei die Aesthetic der Größe der Punkte erhöht wird:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
geom_smooth(se = FALSE) +
theme(legend.position = "bottom") +
guides(colour = guide_legend(nrow = 1, override.aes = list(size = 4)))
In manchen Fällen soll die Skala komplett ersetzt werden. In den meisten dieser Fällen handelt es sich um die kontinuierliche Skala oder die Farbskala. Häufig ist es beispielsweise hilfreich, die Skalen zu transformieren, um Beziehungen besser einzusehen:
# Ohne log-Transformation
ggplot(diamonds, aes(carat, price)) +
geom_bin2d()
# Mit manueller log-Transformation
ggplot(diamonds, aes(log10(carat), log10(price))) +
geom_bin2d()
Als Resultat werden die Achsen jedoch mit log10(x)
beschriftet. Anstelle der Transformation der Aesthetic, können die
Skalen auch direkt mit scale_x_log10()
und
scale_y_log10()
transformiert werden (mit demselben
Resultat):
ggplot(diamonds, aes(carat, price)) +
geom_bin2d() +
scale_x_log10() +
scale_y_log10()
In dem Fall der Transformation ist es sicherlich sinnvoll, das an einer Stelle zu erwähnen (Achsenbeschriftung oder mindestens in der Bildbeschreibung).
Die andere Skala, die häufig verändert wird, ist die Farbskala.
Standardmäßig wird mit der kategorischen Skala das Farbschema
automatisch so ausgesucht, dass die Farben maximal unterschiedlich sind.
Besonders für Leute mit einer Farbschwäche bietet sich die Skala mit
ColorBrewer
an. Die Farbpaletten von
ColorBrewer
sind leichter auseinanderzuhalten:
# Standardfarben
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv))
# ColorBrewer
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv)) +
scale_colour_brewer(palette = "Set1")
Um die verschiedenen Farbpaletten von ColorBrewer
in R
nachzuschlagen, schauen Sie unter der entsprechenden Skalierungsfunktion
nach (?scale_colour_brewer()
,
?scale_fill_brewer()
).
Ebenfalls kann es nützlich sein, ergänzend die Formen der Punkte zu ändern, um sie besser zu unterscheiden:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv, shape = drv)) +
scale_colour_brewer(palette = "Set1")
Die ColorBrewer
Skalen sind hier
visuell einsehbar und über das RColorBrewer
Paket in R
verwendbar.
Im folgenden sind ein paar Farbpaletten von ColorBrewer
dargestellt:
# Farbpaletten für fünf Kategorien
::display.brewer.all(n = 5) RColorBrewer
Um die Farben manuell zu setzen, wird
scale_colour_manual()
verwendet. Im folgenden Beispiel
werden die Präsidenten gemäß ihrer Partei eingefärbt (blau für Demokrat,
rot für Republikaner):
%>%
presidential mutate(id = 33 + row_number()) %>%
ggplot(aes(start, id, colour = party)) +
geom_point() +
geom_segment(aes(xend = end, yend = id)) +
scale_colour_manual(values = c(Republican = "red", Democratic = "blue"))
Für kontinuierliche Farben wird scale_colour_gradient()
oder scale_fill_gradient()
oder
scale_colour_gradient2()
(positive und negative Zahlen)
verwendet.
Ebenfalls kann scale_colour_viridis()
aus dem
viridis
Paket verwendet werden, um Farbgradienten gut
auseinanderzuhalten:
# Zufällige Werte
<- tibble(
df x = rnorm(10000),
y = rnorm(10000)
)# Standarddarstellung
ggplot(df, aes(x, y)) +
geom_hex() +
coord_fixed()
# Farben gemäß viridis
ggplot(df, aes(x, y)) +
geom_hex() +
::scale_fill_viridis() +
viridiscoord_fixed()
Für die fill
und colour
Aesthetics gibt es
jeweils separat Funktionen, um die Skalen zu ändern
(scale_fill_x()
oder scale_colour_x()
).
Es gibt mehrere Möglichkeiten, den Anzeigebereich von Grafiken zu ändern:
Die Daten anpassen, die angezeigt werden sollen
Die Achsen Limitierungen der Skalen einzeln setzen
xlim
und ylim
in
coord_cartesian()
setzen
Üblicherweise sollte coord_cartesian()
genügen:
# Die Achsen beschränken:
ggplot(mpg, mapping = aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_smooth() +
coord_cartesian(xlim = c(5, 7), ylim = c(10, 30))
# Punkte auf den Bereich filtern
# Hierduch wird geom_smooth verändert:
%>%
mpg filter(displ >= 5, displ <= 7, hwy >= 10, hwy <= 30) %>%
ggplot(aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_smooth()
Wir sehen, dass sich nach dem Filtern die Linie verändert, da sie nur auf den Bereich erstellt wird.
Der Skalenbereich lässt sich auch für jede Skala einzeln setzen. Das ist besonders nützlich, um Skalen zwischen mehreren Grafiken gleich zu gestalten. In dem folgenden Beispiel siehen wir das Problem, dass die Skalenbereiche der Grafiken nicht gleich sind, sodass sich die Grafiken nicht gut vergleichen lassen:
# Vergleiche SUVs und kompakte Autos
<- mpg %>% filter(class == "suv")
suv <- mpg %>% filter(class == "compact")
compact # SUVs:
ggplot(suv, aes(displ, hwy, colour = drv)) +
geom_point()
# kompakte Autos
ggplot(compact, aes(displ, hwy, colour = drv)) +
geom_point()
Hierzu könnten wir mit limits
die Achsen speichern und
jeder Grafik separat beifügen:
# Skalen separat erstellen (limits gibt den kleinsten und größten Wert an, welcher durch range() wiedergegeben wird)
<- scale_x_continuous(limits = range(mpg$displ))
x_scale <- scale_y_continuous(limits = range(mpg$hwy))
y_scale <- scale_colour_discrete(limits = unique(mpg$drv))
col_scale # SUVs:
ggplot(suv, aes(displ, hwy, colour = drv)) +
geom_point() +
+
x_scale +
y_scale col_scale
# kompakte Autos
ggplot(compact, aes(displ, hwy, colour = drv)) +
geom_point() +
+
x_scale +
y_scale col_scale
Nun sind die Skalenbereiche gleich. In vielen Fällen bietet sich
stattdessen jedoch eher ein Gitter mit facets
an.
Letztendlich können auch verschiedene Themes ausgewählt werden. Das
Standard-Theme ist theme_bw()
. Weitere Themes sind in dem
Paket ggthemes
enthalten:
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_smooth(se = FALSE) +
theme_bw()
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_smooth(se = FALSE) +
theme_dark()
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_smooth(se = FALSE) +
theme_gray()
Zur Veränderung weiterer Elemente der Grafik lesen Sie am besten in dem ggplot2 Buch nach.
Unter anderem lassen sich auch eigene Themes erstellen und vieles mehr.
Um Grafiken zu speichern lässt sich beispielsweise auf den Export-Knopf in der Grafikanzeige rechts klicken.
Ebenfalls gibt es die ggsave
Funktion, um den letzten
Plot oder ein geom-Objekt zu speichern:
ggplot(mpg, aes(displ, hwy)) + geom_point()
ggsave("my-plot.pdf")
# oder:
<- ggplot(mpg, aes(displ, hwy)) + geom_point()
plot ggsave("my-plot2.png", plot)
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.