x <- 1:10
y <- c(2, 4, 3, 5, 6, 7, 9, 8, 10, 11)
plot(x, y)
ggplot2: Visualisierung mit System
data)aes)geom_*)stat_*)scale_*)coord_*)facet_*)theme)lattice, rgl und 3D-Visualisierung
Ein Bild sagt mehr als tausend Worte.
Sprichwort
Datenvisualisierung ist ein entscheidender Bestandteil der Datenanalyse. Sie hilft dabei, komplexe Zusammenhänge sichtbar zu machen, Muster zu identifizieren und Ergebnisse verständlich zu kommunizieren. Visualisierungen dienen dabei nicht nur der Präsentation von Ergebnissen, sondern bereits sehr früh der explorativen Datenanalyse: Ausreißer, Verteilungen und Auffälligkeiten werden häufig erst durch Grafiken sichtbar.
R bietet mehrere Grafiksysteme. In der Praxis sind insbesondere zwei Ansätze relevant:
ggplot2: sehr konsistentes, flexibles und im Data-Science-Umfeld verbreitetes Grafiksystem.In diesem Kapitel werden zunächst Basisgrafiken kompakt eingeführt und anschließend Visualisierungen mit ggplot2 ausführlich behandelt.
Die Basisfunktion für viele Darstellungen ist plot(x, y, ...). Diese Funktion zeichnet standardmäßig ein Streudiagramm und lässt sich über zahlreiche Argumente anpassen.
Damit plot(x, y) funktioniert, müssen
x und y numerische Vektoren sein,Die Werte aus x bestimmen die horizontale Position (x-Achse), die Werte aus y die vertikale Position (y-Achse).
Viele Base-R-Funktionen (plot, hist, boxplot, barplot, …) verwenden dieselben oder sehr ähnliche grafische Parameter. Die wichtigsten sind in Tabelle 5.1 zusammengefasst.
| Parameter | Bedeutung |
|---|---|
main |
Titel der Abbildung |
sub |
Untertitel der Abbildung |
xlab |
Beschriftung der x-Achse |
ylab |
Beschriftung der y-Achse |
col |
Farbe (z. B. Name wie "steelblue" oder Hex-Farbe) |
pch |
Punktsymbol (bei Punktdarstellungen) |
cex |
Größenfaktor für Text/Symbole |
lty |
Linientyp (durchgezogen, gestrichelt, …) |
lwd |
Linienstärke |
xlim |
Grenzen der x-Achse als Vektor c(min, max) |
ylim |
Grenzen der y-Achse als Vektor c(min, max) |
plotDie Funktion plot eignet sich für die Darstellung des Zusammenhangs zweier numerischer Variablen.
Wichtige Inputs:
x: numerischer Vektor für die x-Achse,y: numerischer Vektor für die y-Achse (gleiche Länge wie x),type: Darstellungsart ("p" Punkte, "l" Linie, "b" beides).
Die Abbildung in Abbildung 5.1 zeigt bereits mehrere typische Parameter: über type = "b" werden Punkte und Linien kombiniert, pch steuert die Punktsymbole, lwd die Linienstärke und col die Farbe.
histDie Funktion hist dient zur Darstellung von Verteilungen einer einzelnen numerischen Variable.
Wichtige Inputs:
x: numerischer Vektor,breaks: Anzahl oder genaue Definition der Klassen,freq: Häufigkeit (TRUE) oder Dichte (FALSE).
breaks beeinflusst die Interpretation stark: zu wenige Klassen glätten zu stark, zu viele Klassen erzeugen ein sehr unruhiges Bild.
boxplotBoxplots sind besonders nützlich, um Verteilungen und Ausreißer zwischen Gruppen zu vergleichen.
Wichtige Inputs:
y ~ gruppe zusammen mit einem data-Argument.In vielen R-Funktionen (z. B. bei boxplot, später auch bei Regressionsmodellen) wird die sogenannte Formelnotation verwendet.
Die allgemeine Form lautet
zielvariable ~ erklärende_variable
Die Tilde ~ kann man hier sprachlich lesen als:
Beispiele:
mpg ~ cyl: Verbrauch (mpg) in Abhängigkeit von der Zylinderzahl (cyl)arr_delay ~ origin: Verspätung in Abhängigkeit vom StartflughafenFür den Boxplot bedeutet mpg ~ cyl konkret: Für jede Ausprägung von cyl wird ein eigener Boxplot für mpg gezeichnet.
Die Formel mpg ~ cyl bedeutet: Zeige die Verteilung von mpg, gruppiert nach den Ausprägungen von cyl.
Für den Export einzelner Abbildungen in Dateien (z. B. PNG, PDF oder SVG) kann die Ausgabe gezielt umgeleitet werden. In Base R erfolgt das über sogenannte Grafikgeräte. Die Grundlogik ist immer gleich:
png(), pdf(), svg()),dev.off() schließen.| Format | Typ | R-Funktion(en) | Stärken | Typische Nutzung |
|---|---|---|---|---|
| PNG | Raster | png() |
Sehr breit unterstützt, gut für Folien und Webseiten, steuerbares DPI | Web, Präsentation |
| JPEG | Raster | jpeg() |
Kleine Dateien bei Fotos, aber verlustbehaftete Kompression | Fotos, keine Standardwahl für Diagramme |
| TIFF | Raster | tiff() |
Hohe Qualität, drucknah, oft in Verlagen verlangt | Druck/Publikation (je nach Vorgaben) |
| Vektor | pdf() |
Scharfe Linien/Text bei jeder Skalierung, druckfreundlich | Berichte, Manuskripte, Druck | |
| SVG | Vektor | svg() |
Skalierbar ohne Qualitätsverlust, oft ideal für Diagramme im Web | Web, Quarto/HTML, nachträgliche Bearbeitung |
| Auto | abhängig | ggsave() (ggplot2) |
Format wird über Dateiendung gewählt, konsistent für ggplot2-Plots |
ggplot2-Workflows |
Gerade für Datenvisualisierungen ist SVG häufig sehr gut geeignet:
Einschränkung: Bei extrem vielen grafischen Elementen (z. B. sehr große Punktwolken) können SVG-Dateien groß und in Browsern träge werden. In solchen Fällen ist PNG oft robuster.
dev.off() ist entscheidend: Erst dadurch wird die Datei sauber abgeschlossen und final gespeichert.
Das folgende Muster funktioniert für alle Gerätefunktionen:
Typische Beispiele:
# Rasterformate
png("plot.png", width = 1600, height = 1000, res = 200, bg = "white")
plot(x, y, type = "b", col = "steelblue")
dev.off()
jpeg("plot.jpg", width = 1600, height = 1000, res = 200, quality = 90)
plot(x, y, type = "b", col = "steelblue")
dev.off()
tiff("plot.tiff", width = 1600, height = 1000, res = 300, compression = "lzw")
plot(x, y, type = "b", col = "steelblue")
dev.off()
# Vektorformate
pdf("plot.pdf", width = 8, height = 5, onefile = TRUE)
plot(x, y, type = "b", col = "steelblue")
dev.off()
svg("plot.svg", width = 8, height = 5, pointsize = 11)
plot(x, y, type = "b", col = "steelblue")
dev.off()| Parameter | Bedeutung | Gilt für |
|---|---|---|
filename |
Zielpfad bzw. Dateiname der Ausgabedatei | alle Gerätefunktionen |
width |
Breite der Grafik (Raster meist Pixel; Vektor meist Zoll) | alle Gerätefunktionen |
height |
Höhe der Grafik (Raster meist Pixel; Vektor meist Zoll) | alle Gerätefunktionen |
bg |
Hintergrundfarbe der Grafik | häufig (png, jpeg, tiff, pdf, svg) |
pointsize |
Basis-Schriftgröße für Text | häufig (pdf, svg, teilweise Rastergeräte) |
res |
Auflösung in DPI | Rasterformate (png, jpeg, tiff) |
units |
Einheit von width/height ("px", "in", "cm", "mm") |
v. a. Rasterformate |
quality |
JPEG-Kompressionsqualität (0-100) | jpeg() |
compression |
Kompressionsverfahren ("none", "lzw", "zip", …) |
tiff() |
onefile |
Mehrere aufeinanderfolgende Plots in eine PDF-Datei schreiben | pdf() |
Für pdf() ist onefile = TRUE besonders praktisch: Jeder zusätzliche Plot-Befehl erzeugt automatisch eine neue Seite in derselben PDF-Datei.
Für ggplot2-Grafiken ist häufig ggsave() der einfachste Weg:
Neben dem Code-Export können Abbildungen direkt im Plots-Fenster exportiert werden:
Hinweis: Welche Formate im UI direkt angeboten werden, hängt von RStudio-Version und Betriebssystem ab. Falls SVG im Dialog nicht verfügbar ist, ist der Export per svg()-Funktion der zuverlässige Weg.
Basisgrafiken sind schnell und robust für erste Datenchecks. Für komplexere Visualisierungen mit konsistentem Stil und schrittweisem Aufbau ist ggplot2 in der Regel besser geeignet.
Base-R-Auffrischung
plot ein Streudiagramm für wt und mpg aus mtcars.mpg und einen Boxplot mpg ~ cyl.ggplot2: Visualisierung mit SystemDas Paket ggplot2 implementiert die Idee der Grammar of Graphics Wilkinson, Anand, und Grossman (2005) (vgl. auch Wilkinson (2005)) und wurde von Wickham u. a. (2024) in R umgesetzt (vgl. Wickham (2010)).
Die zentrale Idee lautet: Eine Grafik wird aus klaren Bausteinen zusammengesetzt. Dadurch wird die Erstellung komplexer Darstellungen methodisch nachvollziehbar.
Im Kapitelverlauf werden diese Bausteine in genau der folgenden Reihenfolge aufgebaut:
data)Im Sinne der Grammar of Graphics sind Daten der Ausgangspunkt jeder Abbildung. In ggplot2 werden sie in der Regel im ersten Argument von ggplot() festgelegt.
Eine sichtbare Grafik entsteht in ggplot2 erst dann, wenn zusätzlich mindestens eine Geometrie (geom_*) ergänzt wird.
Für die Arbeit mit ggplot2 ist es hilfreich, sich ein einfaches Datenmodell zu merken:
aes(...) auf visuelle Eigenschaften abgebildet.mpg für dieses Kapitel
| Variable | Typ | Inhalt | Typische Rolle im Plot |
|---|---|---|---|
displ |
numerisch | Hubraum (Liter) | x-Achse |
hwy |
numerisch | Verbrauch auf Highway (mpg) | y-Achse |
drv |
kategorial | Antriebsart ("4", "f", "r") |
Farbe oder Facettierung |
class |
kategorial | Fahrzeugklasse | Gruppierung, Boxplots, Balken |
cty |
numerisch | Verbrauch in der Stadt (mpg) | Vergleichsgröße |
year |
numerisch | Modelljahr (1999, 2008) | Gruppierung / Vergleich |
Vor dem ersten Plot lohnt sich ein kurzer Datencheck:
[1] 234 11
# A tibble: 6 × 6
manufacturer model displ hwy drv class
<chr> <chr> <dbl> <int> <chr> <chr>
1 audi a4 1.8 29 f compact
2 audi a4 1.8 29 f compact
3 audi a4 2 31 f compact
4 audi a4 2 30 f compact
5 audi a4 2.8 26 f compact
6 audi a4 2.8 26 f compact
displ hwy drv class
"numeric" "integer" "character" "character"
displ hwy drv class
0 0 0 0
Damit prüfen Sie, ob
Wichtig für die Praxis: Daten können global oder layer-spezifisch gesetzt werden. Ein einzelner Layer darf also mit einem eigenen Datenausschnitt arbeiten.

So bleibt der Gesamtkontext sichtbar, während eine Teilgruppe gezielt hervorgehoben wird.
ggplot() und Grundaufbau: https://ggplot2.tidyverse.org/reference/ggplot.htmlggplot2-Referenzseiten: https://ggplot2.tidyverse.org/reference/aes)Mit aes(...) legen Sie fest, welche Variable welche visuelle Eigenschaft steuert.
ggplot2
| Ästhetik | Bedeutung |
|---|---|
x, y |
Position auf x- und y-Achse |
color |
Randfarbe von Punkten/Linien |
fill |
Flächenfarbe (z. B. Balken, Boxplots) |
shape |
Punktsymbol |
size |
Punkt- oder Linienstärke |
alpha |
Transparenz |
linetype |
Linientyp |
group |
Gruppierung (wichtig z. B. für Linien) |
Ein einfaches Mapping auf Position und Farbe:
ggplot2 unterscheidet strikt zwischen Mapping (innerhalb von aes(...)) und festen Werten (außerhalb von aes(...)).


Merksatz: Innerhalb von aes(...) bedeutet in der Regel: Zuordnung auf Daten. Außerhalb von aes(...) bedeutet in der Regel: fester Darstellungsstil.
Globale und lokale Mappings lassen sich kombinieren:
`geom_smooth()` using formula = 'y ~ x'

Hier gelten x und y für beide Layer, während color = drv nur für die Punkte gesetzt wird.
aes(): https://ggplot2.tidyverse.org/reference/aes.htmlggplot2-Reference): https://ggplot2.tidyverse.org/reference/geom_*)Geoms bestimmen, wie Daten sichtbar werden: als Punkte, Linien, Balken, Boxplots usw. Welche Geom geeignet ist, hängt von der Fragestellung und vom Datentyp ab.
In Tabelle 5.6 sind häufige Geoms und ihre zentralen Inputs zusammengefasst.
ggplot2 und ihre zentralen Inputs
| Geom | Typische Inputs |
|---|---|
geom_point() |
x, y (zwei numerische Variablen) |
geom_line() |
x (geordnet), y (numerisch), oft zusätzlich group |
geom_bar() |
kategoriale Variable auf x (Zählung erfolgt automatisch) |
geom_col() |
x (Kategorie), y (bereits aggregierte Werte) |
geom_histogram() |
x (numerisch), optional bins oder binwidth |
geom_boxplot() |
x (Gruppe), y (numerisch) |

Ein Scatterplot eignet sich, um Zusammenhänge zwischen zwei numerischen Variablen sichtbar zu machen.

Das Histogramm zeigt die Verteilung einer einzelnen numerischen Variable.

Hier wird die Verteilung einer numerischen Variable (hwy) zwischen Gruppen (class) verglichen. In Base R wird dieselbe Beziehung häufig als Formel hwy ~ class notiert ("hwy in Abhängigkeit von class").
geom_bar()
geom_bar() zählt Beobachtungen automatisch.
geom_col())
geom_col() verwendet vorhandene Werte auf der y-Achse und führt keine automatische Zählung durch.
geom_*-Funktionen (offizielle ggplot2-Referenz): https://ggplot2.tidyverse.org/reference/geom_point(): https://ggplot2.tidyverse.org/reference/geom_point.htmlgeom_line(): https://ggplot2.tidyverse.org/reference/geom_path.htmlgeom_boxplot(): https://ggplot2.tidyverse.org/reference/geom_boxplot.htmlgeom_histogram(): https://ggplot2.tidyverse.org/reference/geom_histogram.htmlstat_*)Viele Geoms enthalten bereits implizite statistische Transformationen.
| Geom | Standard-Statistik |
|---|---|
geom_histogram() |
stat_bin() |
geom_bar() |
stat_count() |
geom_boxplot() |
stat_boxplot() (Quartile, Median, Whisker) |
Das bedeutet: Ein Plot zeigt oft nicht nur Rohdaten, sondern bereits eine verarbeitete statistische Darstellung.
geom_bar() (implizit) vs. stat_count() (explizit)

Beide Varianten erzeugen inhaltlich dasselbe Ergebnis. geom_bar() ist die Kurzform, stat_count() macht die zugrunde liegende Statistik sichtbar.
geom_histogram() (stat_bin())

Hier wird dieselbe Variable unterschiedlich fein klassiert. Die Wahl von bins beeinflusst die visuelle Aussage einer Verteilung deutlich.

Ein Boxplot basiert auf Quartilen und Median und komprimiert viele Einzelbeobachtungen zu einer gut vergleichbaren Zusammenfassung.
Dichtekurven (geom_density()) und modellbasierte Trendlinien (geom_smooth()) sind ebenfalls statistische Layer. Sie werden später im Skript inhaltlich vertieft eingeführt.
stat_* in der offiziellen ggplot2-Referenz: https://ggplot2.tidyverse.org/reference/stat_count(): https://ggplot2.tidyverse.org/reference/geom_bar.htmlgeom_histogram() / stat_bin(): https://ggplot2.tidyverse.org/reference/geom_histogram.htmlgeom_boxplot() / stat_boxplot(): https://ggplot2.tidyverse.org/reference/geom_boxplot.htmlscale_*)Skalen steuern die Übersetzung von Datenwerten in visuelle Ausprägungen: Achsen, Farben, Legendenbeschriftungen und Breaks.
| Funktion | Zweck |
|---|---|
scale_x_continuous() |
Achsenbreaks, Labels, Grenzen der x-Achse |
scale_y_continuous() |
Achsenbreaks, Labels, Grenzen der y-Achse |
scale_x_log10() |
log10-Transformation der x-Achse (nur positive Werte) |
scale_y_log10() |
log10-Transformation der y-Achse (nur positive Werte) |
scale_x_discrete() |
Reihenfolge und Labels einer kategorialen x-Achse steuern |
scale_y_discrete() |
Reihenfolge und Labels einer kategorialen y-Achse steuern |
scale_color_brewer() |
diskrete Farbpaletten |
scale_color_manual() |
frei definierte diskrete Farben |
scale_fill_brewer() |
diskrete Flächenfarben |
scale_size_continuous() |
Größenabbildung für numerische Variablen |
Beispiel mit diskreter Farbskala:

Beispiel für Achsensteuerung:

Neben Breaks und Labels können Skalen auch transformiert werden. Besonders häufig ist die Log-Transformation, z. B. bei stark rechtsschiefen Variablen oder wenn eher relative als absolute Unterschiede interessieren.


Wichtig für die Interpretation:
Neben scale_x_log10() und scale_y_log10() sind auch andere Transformationen möglich, z. B. über scale_x_continuous(trans = "sqrt").
Hinweis: Wenn Sie mit scale_* harte Achsengrenzen setzen, können Daten außerhalb der Grenzen entfernt werden. Für „Zoom“ ohne Datenverlust ist coord_cartesian() meist besser geeignet (siehe Kapitel 5.3.6).
scale_*-Funktionen: https://ggplot2.tidyverse.org/reference/coord_*)Standardmäßig nutzt ggplot2 ein kartesisches Koordinatensystem. Über coord_* kann die Darstellung verändert werden, ohne das eigentliche Mapping neu zu definieren.
Ein häufiger Fall ist das visuelle Zoomen:

Mit coord_flip() werden x- und y-Achse vertauscht. Das ist bei kategorialen Darstellungen oft lesbarer.
Für Spezialfälle gibt es weitere Koordinatensysteme (z. B. Polarkoordinaten), die hier nicht vertieft werden.
coord_*-Funktionen: https://ggplot2.tidyverse.org/reference/coord_cartesian(): https://ggplot2.tidyverse.org/reference/coord_cartesian.htmlcoord_flip(): https://ggplot2.tidyverse.org/reference/coord_flip.htmlfacet_*)Facettierung teilt eine Grafik in mehrere Teilgrafiken auf. Dadurch lassen sich Gruppen vergleichen, ohne dass sich Punkte, Linien oder Balken gegenseitig überlagern.
Ein-Dimension-Facettierung mit facet_wrap():
Zwei-Dimension-Facettierung mit facet_grid():
Wenn sich Wertebereiche zwischen Panels stark unterscheiden, kann scales = "free" (oder "free_y") sinnvoll sein. Für direkte Vergleiche ist eine gemeinsame Skala jedoch oft vorzuziehen.
facet_wrap(): https://ggplot2.tidyverse.org/reference/facet_wrap.htmlfacet_grid(): https://ggplot2.tidyverse.org/reference/facet_grid.htmltheme)Während aes(...) und geom_* den Inhalt definieren, steuert theme(...) das visuelle Design: Schrift, Gitterlinien, Legendenposition und viele weitere Elemente.
Ein schneller Einstieg sind die vordefinierten Themes wie theme_minimal(), theme_bw() oder theme_classic().
Über theme(...) lassen sich Details gezielt anpassen:
| Element | Bedeutung |
|---|---|
legend.position |
Position der Legende ("right", "bottom", …) |
plot.title |
Formatierung des Titels |
plot.subtitle |
Formatierung des Untertitels |
axis.title.x, axis.title.y |
Formatierung der Achsentitel |
panel.grid.major |
Hauptgitterlinien |
panel.grid.minor |
Nebengitterlinien |

theme() und Theme-Elemente: https://ggplot2.tidyverse.org/reference/theme.htmltheme_minimal(), theme_bw(), …): https://ggplot2.tidyverse.org/reference/ggtheme.htmlNach den Einzelbausteinen folgt nun ein durchgängiger Aufbau in fünf Schritten. Die Schritte orientieren sich an einem typischen Analyseworkflow.
Dies ist die Minimalform: Daten, Mapping und Geometrie.

Beschriftungen sind zentral für die Interpretierbarkeit. Die wichtigsten labs()-Argumente zeigt Tabelle 5.10.
labs() in ggplot2
| Argument | Bedeutung |
|---|---|
title |
Haupttitel der Abbildung |
subtitle |
Untertitel, häufig für Datensatz oder Kontext |
caption |
Quellenangabe oder methodische Hinweise |
x |
Beschriftung der x-Achse |
y |
Beschriftung der y-Achse |
color |
Titel der Farb-Legende |
fill |
Titel der Flächen-Farb-Legende |
shape |
Titel der Form-Legende |
size |
Titel der Größen-Legende |
linetype |
Titel der Linientyp-Legende |
`geom_smooth()` using formula = 'y ~ x'

Hier kommen zwei zentrale Ideen zusammen:
color = drv macht Gruppen sichtbar.geom_smooth) verdichtet das Muster zu einer Trenddarstellung.`geom_smooth()` using formula = 'y ~ x'

In diesem Schritt wird aus einer Analysegrafik eine kommunikationsfähige Darstellung.
`geom_smooth()` using formula = 'y ~ x'

Einzelne Grafiken speichern Sie mit ggsave():
ggsave() erkennt das Ausgabeformat über die Dateiendung. Für Veröffentlichungen und skalierbare Darstellungen sind PDF oder SVG oft die bessere Wahl als reine Pixelgrafiken.
aes(...) gesetzt (kein Mapping, keine Legende).geom_bar() und geom_col() verwechselt (geom_bar() zählt, geom_col() nutzt vorhandene y-Werte).labs(...) fehlt).alpha, Aggregation oder Facets fehlen).scale_* gesetzt, obwohl eigentlich nur gezoomt werden sollte (coord_cartesian() nutzen).Diese Fehler sind normal und treten besonders in der Lernphase häufig auf. Ein schrittweiser Plotaufbau (wie in Kapitel 5.3.9) hilft, Probleme früh zu erkennen.
ggplot2 Grundlagen und Transfer
mpg mit displ auf der x- und hwy auf der y-Achse.drv.drv.lattice, rgl und 3D-VisualisierungNeben Base R und ggplot2 existieren weitere Grafiksysteme, die Sie in älterem Code oder in Spezialanwendungen weiterhin antreffen können.
latticelattice war lange ein wichtiges Grafiksystem in R und wird bis heute in Bestandscode genutzt. Es
rgl und 3Drgl ermöglicht interaktive 3D-Grafiken (drehen, zoomen, Perspektive ändern). Das kann in explorativen Phasen hilfreich sein, wenn drei numerische Variablen gemeinsam untersucht werden sollen.
In Berichten ist 3D jedoch mit Vorsicht zu verwenden:
Daher wird im Skript standardmäßig eine statische Beispielabbildung gezeigt (siehe Abbildung 5.7). Der interaktive Code bleibt als optionale Vorlage erhalten.
rgl (statisch eingebettet).
Didaktisch ist meist ein guter 2D-Plot der bessere Standard. 3D ist eher ein ergänzendes Werkzeug für spezielle Fragestellungen.
Visualisierungen entstehen in der Praxis selten isoliert. Meist werden sie gemeinsam mit Text, Code und Interpretation in einem reproduzierbaren Dokument bereitgestellt. Dafür eignet sich Quarto.
Quarto verbindet
in einem einzigen, reproduzierbaren Dokument. Dadurch bleibt transparent, welcher Code zu welcher Aussage oder welcher Abbildung geführt hat.
Eine Quarto-Datei (.qmd) besteht typischerweise aus
Beispiel für einen YAML-Kopf mit mehreren Zielformaten:
Damit kann dasselbe Dokument als HTML, PDF oder Word-Datei gerendert werden.
Quarto unterstützt verschiedene Dokumenttypen. Typische Einsatzfälle sind in Tabelle 5.11 zusammengefasst.
| Dokumenttyp | Typische Formate | Einsatz |
|---|---|---|
| Bericht / Paper | html, pdf, docx |
Analysen, Hausarbeiten, technische Berichte |
| Präsentation | revealjs, beamer, pptx |
Vorträge, Seminarpräsentationen |
| Website | website |
Kurswebseiten, Projektdokumentation |
| Buch / Skript | book |
Lehrmaterial, längere strukturierte Inhalte |
Templates steuern Layout und Erscheinungsbild (z. B. Theme, Schriften, Seitenelemente). In der Praxis arbeiten Sie meist mit
html, pdf, revealjs) undQuarto nutzt Markdown als Textsyntax. Die wichtigsten Elemente zeigt Tabelle 5.12.
| Syntax | Bedeutung |
|---|---|
# Überschrift |
Überschrift Ebene 1 |
## Unterüberschrift |
Überschrift Ebene 2 |
**fett**, *kursiv* |
Hervorhebung |
`code` |
Inline-Code |
- Punkt A |
Aufzählung |
1. Schritt |
Nummerierte Liste |
[Linktext](https://quarto.org) |
Hyperlink |
 |
Abbildung einbinden |
Externe Abbildungen werden über einen relativen Pfad eingebunden:
Mit Label können Sie später referenzieren:
Links und lokale Dateien funktionieren analog:
Für größere Dokumente sind konsistente Verweise zentral:
#fig-...#tbl-...{#sec-...}Referenziert wird dann im Text z. B. über @fig-rstudio-plot-panel, @tbl-chunkoptions oder @sec-gg-scales.
Für Literaturverweise wird im YAML eine Bibliographie-Datei angegeben und im Text mit Zitationsschlüsseln referenziert:
Beispiel im Fließtext: Die Grammar of Graphics wurde in @Wickham2010 für R operationalisiert.
Code-Chunks sind ausführbare Codeblöcke in einer .qmd-Datei.
Code-Chunks werden durch Triple-Backticks begrenzt. Das sind drei Zeichen ` hintereinander:
Wichtig: Triple-Backticks sind keine drei einfachen Anführungszeichen (''').
Ein Chunk besteht typischerweise aus:
```{r}#|```| Option | Bedeutung |
|---|---|
echo |
Code anzeigen (true, false, fenced) |
eval |
Code ausführen (true) oder nicht (false) |
include |
Chunk komplett ein-/ausblenden |
warning |
Warnungen anzeigen oder unterdrücken |
message |
Paket-/Info-Meldungen anzeigen oder unterdrücken |
results |
Ausgabeformat der Resultate steuern |
fig-cap |
Bildunterschrift setzen |
label |
Chunk-Label setzen (für Referenzen) |
fig-width |
Breite der Abbildung |
fig-height |
Höhe der Abbildung |
out-width |
Ausgabegröße im Dokument (z. B. "80%") |
fig-align |
Ausrichtung der Abbildung (left, center, right) |
Sie können im Fließtext auf die Abbildung verweisen, z. B. mit @fig-quarto-beispiel.
Zusätzlich sind Inline-Berechnungen im Fließtext möglich. Die Quarto-Syntax lautet `{r} ausdruck`. Die Knitr-Kurzform `r ausdruck` funktioniert ebenfalls, ist aber enginespezifisch.
Beispiel (Syntax in der .qmd-Datei):
Hinweis: Im Quelltextbeispiel ist die Inline-Auswertung absichtlich escaped, damit die Syntax sichtbar bleibt. Für die tatsächliche Berechnung im Fließtext schreiben Sie {r}.
Gerendertes Ergebnis:
Der Datensatz mpg enthält 234 Beobachtungen.
Quarto lässt sich vollständig über die GUI von RStudio/Posit nutzen. Ein typischer Einstieg sieht so aus:
.qmd speichern.
.qmd-Datei und sichtbarem Render-Button.
Praktische Hinweise:
.qmd-Datei..qmd-Datei und alle referenzierten Ressourcen (z. B. img/) gemeinsam im Projekt zu halten.Rendern bedeutet, aus .qmd-Dateien ein Ausgabedokument zu erzeugen.
In RStudio/Posit:
In der Konsole:
Für ganze Projekte (z. B. Website oder Book) genügt meist:
Hinweis zu PDF: Für --to pdf wird eine LaTeX-Umgebung benötigt.
Quarto in der Praxis
.qmd-Datei mit Titel, Autor und zwei Ausgabeformaten (html, pdf).img-Ordner ein und versehen Sie diese mit Label.ggplot2-Abbildung.