> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/de/fachspezifisch/08-pgfplots-package.md).

# pgfplots-Paket

## Einführung

Die `pgfplots` Paket, das auf [`TikZ`](/latex/de/abbildungen-und-tabellen/05-tikz-package.md), ist ein leistungsstarkes Visualisierungswerkzeug und ideal zum Erstellen wissenschaftlicher/technischer Grafiken. Die Grundidee ist, dass Sie die Eingabedaten/-formel bereitstellen und `pgfplots` erledigt den Rest.

### Die Dokumentpräambel

Um das `pgfplots` Um das Paket in Ihrem Dokument hinzuzufügen, fügen Sie der Präambel die folgende Zeile hinzu:

`\usepackage{pgfplots}`

Sie können auch das Verhalten von `pgfplots` in der Dokumentpräambel konfigurieren. Um beispielsweise die Größe jedes Plots zu ändern und die Rückwärtskompatibilität zu gewährleisten (empfohlen), fügen Sie die nächste Zeile hinzu:

`\pgfplotsset{width=10cm,compat=1.9}`

Dies ändert die Größe jedes `pgfplot` Diagramms auf 10 Zentimeter, was sehr groß ist; Sie können andere Einheiten verwenden (pt, mm, in). Der *compat* Parameter sorgt dafür, dass der Code mit Paketversion 1.9 oder höher funktioniert.

### Kompilierzeit (kurzer Hintergrund)

Als die ursprüngliche TeX-Engine entworfen/geschrieben wurde, vor mehr als 40 Jahren, war sie nicht für *direkte* Erzeugung von Grafiken ausgelegt – diese sollten Dateien sein, die von externen Programmen (z. B. MetaPost) erstellt und in das gesetzte Dokument importiert werden. Das Aufkommen von pdfTeX – das eng auf der ursprünglichen TeX-Software basiert – brachte die Möglichkeit, Grafiken zu erstellen *direktes* mithilfe der neuen integrierten TeX-Sprachbefehle von pdfTeX (genannt *Primitiven*) die die PDF-Operatoren/Daten ausgeben können, die zur Erzeugung von Grafiken erforderlich sind. Die Entstehung von pdfTeX führte zur Entwicklung ausgefeilter LaTeX-Grafikpakete wie `TikZ`, `pgfplots` usw., die in der Lage sind, Grafiken zu erzeugen, die mit hochrangigen LaTeX-Befehlen kodiert sind.

Allerdings müssen diese hochrangigen LaTeX-Grafikbefehle im Hintergrund und tief im Inneren der pdfTeX-Engine (und anderer Engines) verarbeitet werden, indem sie zurück in niedrigrangige (primitive) pdfTeX-Engine-Befehle „umgewandelt“ werden, die tatsächlich die für die Erzeugung der resultierenden Abbildung(en) erforderlichen PDF-Operatoren erzeugen (ausgeben). Diese Verarbeitung grafischer LaTeX-Befehle – Expansion und Ausführung von Primitiven – kann eine nicht unerhebliche Zeit in Anspruch nehmen. Selbst ein einziger hochrangiger LaTeX-Grafikbefehl zusammen mit den entsprechenden Daten kann die wiederholte Ausführung von *vielen* niedrigrangigen TeX-Engine-(Primitive-)Befehlen erfordern. Aus Sicht des Endanwenders können Dokumente mit mehreren `pgfplots` Abbildungen und/oder sehr komplexen Grafiken erheblich Zeit benötigen, um gerendert (kompiliert) zu werden.

### Kompilierzeit verkürzen

Um die Geschwindigkeit der Dokumentkompilierung zu erhöhen, können Sie das `pgfplots` Paket so konfigurieren, dass die Abbildungen in separate PDF-Dateien exportiert und dann in das Dokument importiert werden: einmal kompilieren, dann die Abbildungen wiederverwenden. Fügen Sie dazu den unten gezeigten Code in die Präambel ein:

```
\usepgfplotslibrary{external}
\tikzexternalize
```

Siehe [diesen Hilfsartikel](/latex/de/fragen-and-antworten/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md) für weitere Einzelheiten darüber, wie Sie die tikz-Auslagerung in Ihrem Overleaf-Projekt einrichten.

## Einfaches Beispiel (auch mit Auslagerung der Abbildungen)

```latex
\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}

% Wir werden die Abbildungen auslagern
\usepgfplotslibrary{external}
\tikzexternalize

\begin{document}

Das erste Beispiel ist eine 2D- und 3D-Darstellung mathematischer Ausdrücke nebeneinander.

%Hier beginnt der 2D-Plot
\begin{tikzpicture}
\begin{axis}
\addplot[color=red]{exp(x)};
\end{axis}
\end{tikzpicture}
%Hier endet der 2D-Plot
\hskip 5pt
%Hier beginnt der 3D-Plot
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
{exp(-x^2-y^2)*x};
\end{axis}
\end{tikzpicture}
%Hier endet der 3D-Plot

\end{document}
```

[Öffnen Sie dieses `pgfplots` Beispiel in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+1\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%0A%25+We+will+externalize+the+figures%0A%5Cusepgfplotslibrary%7Bexternal%7D%0A%5Ctikzexternalize%0A%0A%5Cbegin%7Bdocument%7D%0A%0AFirst+example+is+2D+and+3D+math+expressions+plotted+side-by-side.%0A%0A%25Here+begins+the+2D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot%5Bcolor%3Dred%5D%7Bexp%28x%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+2D+plot%0A%5Chskip+5pt%0A%25Here+begins+the+3D+plot%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D%0A%7Bexp%28-x%5E2-y%5E2%29%2Ax%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%25Here+ends+the+3D+plot%0A%0A%5Cend%7Bdocument%7D)

Das folgende Bild zeigt das Ergebnis, das durch den obigen Code erzeugt wurde:

![Plgplotsex1OLV2.png](/files/1195fa3386fe526359269d92c930de0b0f65950a)

### Erklärung des Codes

Da `pgfplots` basiert auf `tikz` der Plot muss innerhalb einer `tikzpicture` Umgebung liegen. Dann setzt die Umgebungsdeklaration `\begin{axis}`, `\end{axis}` legt die richtige Skalierung für den Plot fest – siehe die [Referenzhandbuch](#reference-guide) für andere Achsenumgebungen.

Um einen tatsächlichen Plot hinzuzufügen, wird der Befehl `\addplot[color=red]{log(x)};` verwendet. In den eckigen Klammern `[...]`, können einige Optionen übergeben werden; hier setzen wir die `Farbe` des Plots auf `red`. Die eckigen Klammern sind obligatorisch; wenn keine Optionen übergeben werden, lassen Sie zwischen ihnen einfach ein Leerzeichen. In die geschweiften Klammern setzen Sie die zu zeichnende Funktion. Wichtig ist, daran zu denken, dass dieser Befehl mit einem Semikolon (;) enden muss.

Um einen zweiten Plot neben dem ersten zu platzieren, deklarieren Sie eine neue `tikzpicture` Umgebung. Fügen Sie keine neue Zeile ein, sondern einen kleinen Leerraum, in diesem Fall `hskip 10pt` fügt einen 10pt breiten Leerraum ein.

Der Rest der Syntax ist derselbe, außer für den `\addplot3 [surf,]{exp(-x^2-y^2)*x};`. Dies fügt einen 3D-Plot hinzu, und die Option `surf` in den eckigen Klammern erklärt, dass es sich um einen Oberflächenplot handelt. Die zu zeichnende Funktion muss in geschweiften Klammern platziert werden. Vergessen Sie erneut nicht, am Ende des Befehls ein Semikolon (;) zu setzen.

**Hinweis**: Es wird als gute Praxis empfohlen, den Code einzurücken – siehe den zweiten Plot im obigen Beispiel – und am Ende jeder an `\addplot`übergebenen Option ein Komma (,) hinzuzufügen. So wird der Code lesbarer und es ist einfacher, bei Bedarf weitere Optionen hinzuzufügen.

## 2D-Plots

`pgfplots`Die 2D-Plotfunktionen von ' sind umfangreich – und Sie können Ihre Plots an Ihre Anforderungen anpassen. Dennoch liefern die Standardoptionen meist sehr gute Ergebnisse, sodass Sie nur die Daten einspeisen müssen und LaTeX den Rest erledigt.

### Mathematische Ausdrücke darstellen

Hier ist ein Beispiel:

```latex
\begin{tikzpicture}
\begin{axis}[
    Achsenlinien = links,
    xlabel = \(x\),
    ylabel = {\(f(x)\)},
]
%Unterhalb ist die rote Parabel definiert
\addplot [
    domain=-10:10,
    samples=100,
    color=red,
]
{x^2 - 2*x - 1};
\addlegendentry{\(x^2 - 2x - 1\)}
%Hier ist die blaue Parabel definiert
\addplot [
    domain=-10:10,
    samples=100,
    color=blue,
    ]
    {x^2 + 2*x + 1};
\addlegendentry{\(x^2 + 2x + 1\)}

\end{axis}
\end{tikzpicture}
```

[Öffnen Sie dieses `pgfplots` Beispiel in Overleaf.](https://www.overleaf.com/docs?engine=\&snip_name=pgfplots+example+2\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.25in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++axis+lines+%3D+left%2C%0A++++xlabel+%3D+%5C%28x%5C%29%2C%0A++++ylabel+%3D+%7B%5C%28f%28x%29%5C%29%7D%2C%0A%5D%0A%25Below+the+red+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dred%2C%0A%5D%0A%7Bx%5E2+-+2%2Ax+-+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+-+2x+-+1%5C%29%7D%0A%25Here+the+blue+parabola+is+defined%0A%5Caddplot+%5B%0A++++domain%3D-10%3A10%2C+%0A++++samples%3D100%2C+%0A++++color%3Dblue%2C%0A++++%5D%0A++++%7Bx%5E2+%2B+2%2Ax+%2B+1%7D%3B%0A%5Caddlegendentry%7B%5C%28x%5E2+%2B+2x+%2B+1%5C%29%7D%0A%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Die Ausgabe dieses Codes ist im folgenden Bild zu sehen – die Präambel des LaTeX-Dokuments wird beim Öffnen des Links automatisch hinzugefügt:

![Plgplotsex2.png](/files/6b693436b7a503ca401805a6ee4e934444b34333)

#### Erklärung des Codes

Lassen Sie uns die neuen Befehle zeilenweise analysieren:

**Achsenlinien = links.**

Dies setzt die Achsen nur auf die linke und untere Seite des Plots statt auf den Standardrahmen. Weitere Anpassungsoptionen finden Sie im Referenzhandbuch.

**xlabel = (x) und ylabel = {(f(x))}.**

Selbsterklärende Parameternamen: Damit können Sie die horizontale und vertikale Achse beschriften. Beachten Sie den ylabel-Wert in den geschweiften Klammern; diese Klammern sagen pgfplots, wie der Text zu gruppieren ist. Das xlabel hätte ebenfalls Klammern haben können. Das ist nützlich für komplizierte Beschriftungen, die pgfplots verwirren könnten.

**\addplot.**

Dies fügt der Achse einen Plot hinzu; die allgemeine Verwendung wurde in der Einführung beschrieben. In diesem Beispiel gibt es zwei neue Parameter.

**domain=-10:10.**

Dies legt den Wertebereich von x fest.

**samples=100.**

Bestimmt die Anzahl der Punkte im durch domain definierten Intervall. Je größer der Wert von samples, desto schärfer wird der Graph, aber desto länger dauert das Rendern.

**\addlegendentry{(x^2 - 2x - 1)}.**

Dies fügt die Legende hinzu, um die Funktion x^2 - 2x - 1 zu kennzeichnen.

Um einen weiteren Graphen zum Plot hinzuzufügen, schreiben Sie einfach einen neuen `\addplot` Eintrag.

### Plotten aus Daten

Wissenschaftliche Forschung liefert oft Daten, die analysiert werden müssen. Das nächste Beispiel zeigt, wie man Daten mit *pgfplots*:

```latex
Plotten aus Daten:

\begin{tikzpicture}
\begin{axis}[
    title={Temperaturabhängigkeit der Löslichkeit von CuSO\(_4\cdot\)5H\(_2\)O},
    xlabel={Temperatur [\textcelsius]},
    ylabel={Löslichkeit [g pro 100 g Wasser]},
    xmin=0, xmax=100,
    ymin=0, ymax=120,
    xtick={0,20,40,60,80,100},
    ytick={0,20,40,60,80,100,120},
    legend pos=north west,
    ymajorgrids=true,
    grid style=dashed,
]

\addplot[
    color=blue,
    mark=square,
    ]
    coordinates {
    (0,23.1)(10,27.5)(20,32)(30,37.8)(40,44.6)(60,61.8)(80,83.8)(100,114)
    };
    \legend{Männer,Frauen}

\end{axis}
\end{tikzpicture}
```

[Öffnen Sie dieses `pgfplots` Beispiel in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+example+3\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0APlotting+from+data%3A%0A%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3D%7BTemperature+dependence+of+CuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O+solubility%7D%2C%0A++++xlabel%3D%7BTemperature+%5B%5Ctextcelsius%5D%7D%2C%0A++++ylabel%3D%7BSolubility+%5Bg+per+100+g+water%5D%7D%2C%0A++++xmin%3D0%2C+xmax%3D100%2C%0A++++ymin%3D0%2C+ymax%3D120%2C%0A++++xtick%3D%7B0%2C20%2C40%2C60%2C80%2C100%7D%2C%0A++++ytick%3D%7B0%2C20%2C40%2C60%2C80%2C100%2C120%7D%2C%0A++++legend+pos%3Dnorth+west%2C%0A++++ymajorgrids%3Dtrue%2C%0A++++grid+style%3Ddashed%2C%0A%5D%0A%0A%5Caddplot%5B%0A++++color%3Dblue%2C%0A++++mark%3Dsquare%2C%0A++++%5D%0A++++coordinates+%7B%0A++++%280%2C23.1%29%2810%2C27.5%29%2820%2C32%29%2830%2C37.8%29%2840%2C44.6%29%2860%2C61.8%29%2880%2C83.8%29%28100%2C114%29%0A++++%7D%3B%0A++++%5Clegend%7BCuSO%5C%28_4%5Ccdot%5C%295H%5C%28_2%5C%29O%7D%0A++++%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Die Ausgabe dieses Codes ist im folgenden Bild zu sehen – die Präambel des LaTeX-Dokuments wird beim Öffnen des Links automatisch hinzugefügt:

![Plgplotsex3.png](/files/a3a661cfa9d09af9e3fa3f52578bd39eabeb4f85)

#### Erklärung des Codes

Hier gibt es einige neue Befehle und Parameter:

**title={Temperaturabhängigkeit der Löslichkeit von CuSO(\_4\cdot)5H(\_2)O}.**

Wie zu erwarten, weist dies der Abbildung einen Titel zu. Der Titel wird oberhalb des Plots angezeigt.

**xmin=0, xmax=100, ymin=0, ymax=120.**

Minimale und maximale Grenzen der x- und y-Achsen.

**xtick={0,20,40,60,80,100}, ytick={0,20,40,60,80,100,120}.**

Punkte, an denen die Markierungen platziert werden. Wenn leer, werden die Ticks automatisch gesetzt.

**legend pos=north west.**

Position des Legendenkastens. Weitere Optionen finden Sie im Referenzhandbuch.

**ymajorgrids=true.**

Dies aktiviert/deaktiviert Gitterlinien an den Tick-Positionen auf der y-Achse. Verwenden Sie xmajorgrids, um Gitterlinien auf der x-Achse zu aktivieren.

**grid style=dashed.**

Selbsterklärend. Um gestrichelte Gitterlinien anzuzeigen.

**mark=square.**

Dies zeichnet an jedem Punkt im Koordinatenarray eine quadratische Markierung. Jede Markierung wird durch eine gerade Linie mit der nächsten verbunden.

**coordinates {(0,23.1)(10,27.5)(20,32)...}**

Koordinaten der zu zeichnenden Punkte. Dies sind die Daten, die Sie grafisch analysieren möchten.

Wenn sich die Daten in einer Datei befinden, was meistens der Fall ist; statt der Befehle `\addplot` und `coordinates` sollten Sie `\addplot table {file_with_the_data.dat}`verwenden; der Rest der Optionen ist in dieser Umgebung gültig.

### Streudiagramme

Streudiagramme werden verwendet, um Informationen mithilfe von Markierungen darzustellen, und werden häufig bei der Berechnung statistischer Regressionen verwendet. In diesem Beispiel erstellen wir ein Streudiagramm mit Daten aus einer Datei namens `scattered_example.dat`, in der die Daten so aussehen:

```
GPA  ma  ve  co   un
3.45 643 589 3.76 3.52
2.78 558 512 2.87 2.91
2.52 583 503 2.54 2.4
3.67 685 602 3.83 3.47
3.24 592 538 3.29 3.47
2.1 562 486 2.64 2.37
...
```

Unser Streudiagramm verwendet die ersten beiden Spalten der Daten:

```latex
\begin{tikzpicture}
\begin{axis}[
    enlargelimits=false,
]
\addplot+[
    only marks,
    scatter,
    mark=halfcircle*,
    mark size=2.9pt]
table[meta=ma]
{scattered_example.dat};
\end{axis}
\end{tikzpicture}
```

![Scattered.png](/files/ba5b4783cd01f63c8ccb52beca8daf5655990080)

[Öffnen Sie ein Beispielprojekt für ein Streudiagramm in Overleaf (enthält die Datendatei `scattered_example.dat`).](https://www.overleaf.com/project/new/template/20099?id=68399290\&templateName=Scatter+plot+example\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

#### Erklärung des Codes

Die an die `axis` und `addplot` Umgebungen übergebenen Parameter können auch in einem Datenplot verwendet werden, außer für `scatter`. Nachfolgend die Beschreibung des Codes:

**Grenzen vergrößern=false**

Dies verkleinert die Achsen so, dass der Punkt mit den maximalen und minimalen Werten am Rand des Plots liegt.

**nur Markierungen**

Sehr eindeutig: An jedem Punkt wird eine Markierung gesetzt.

**scatter**

Wenn scatter verwendet wird, werden die Punkte je nach einem Wert eingefärbt; die Farbe wird durch den unten erläuterten meta-Parameter angegeben.

**mark=halfcircle**\*

Die Art der zu verwendenden Markierung auf jedem Punkt; sehen Sie im Referenzhandbuch nach einer Liste möglicher Werte.

**mark size=2.9pt**

Die Größe jeder Markierung; es können verschiedene Einheiten verwendet werden.

**table\[meta=ma]{scattered\_example.dat};**

Hier teilt der Befehl table latex mit, dass die zu zeichnenden Daten in einer Datei stehen. Der Parameter meta=ma wird übergeben, um die Spalte auszuwählen, die die Farbe jedes Punkts bestimmt. In geschweiften Klammern steht der Name der Datendatei.

### Balkendiagramme

Balkendiagramme (auch als Balkendiagramme und Balkenplots bekannt) werden verwendet, um gesammelte Daten darzustellen, hauptsächlich statistische Daten über eine bestimmte Population. Balkendiagramme in `pgfplots` sind hochgradig konfigurierbar, aber hier zeigen wir ein einfaches Beispiel:

```latex
\begin{tikzpicture}
\begin{axis}[
	x tick label style={
		/pgf/number format/1000 sep=},
	ylabel=Jahr,
	enlargelimits=0.05,
	legend style={at={(0.5,-0.1)},
	anchor=north,legend columns=-1},
	ybar interval=0.7,
]
\addplot
	coordinates {(2012,408184) (2011,408348)
		 (2010,414870) (2009,412156)};
\addplot
	coordinates {(2012,388950) (2011,393007)
		(2010,398449) (2009,395972)};
\legend{Männer,Frauen}
\end{axis}
\end{tikzpicture}
```

[Öffnen Sie dieses `pgfplots` Balkencode-Beispiel in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+bar+chart+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Btextcomp%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A%09x+tick+label+style%3D%7B%0A%09%09%2Fpgf%2Fnumber+format%2F1000+sep%3D%7D%2C%0A%09ylabel%3DYear%2C%0A%09enlargelimits%3D0.05%2C%0A%09legend+style%3D%7Bat%3D%7B%280.5%2C-0.1%29%7D%2C%0A%09anchor%3Dnorth%2Clegend+columns%3D-1%7D%2C%0A%09ybar+interval%3D0.7%2C%0A%5D%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C408184%29+%282011%2C408348%29%0A%09%09+%282010%2C414870%29+%282009%2C412156%29%7D%3B%0A%5Caddplot+%0A%09coordinates+%7B%282012%2C388950%29+%282011%2C393007%29+%0A%09%09%282010%2C398449%29+%282009%2C395972%29%7D%3B%0A%5Clegend%7BMen%2CWomen%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Die Ausgabe dieses Codes ist im folgenden Bild zu sehen – die Präambel des LaTeX-Dokuments wird beim Öffnen des Links automatisch hinzugefügt:

![Barchartsexample.png](/files/c6bb7c62a3b9568af39f264d68f9bd8a2b4d0e8a)

#### Erklärung des Codes

Die Abbildung beginnt mit der ([zuvor erläuterten](#introduction)) Deklaration der `tikzpicture` und `axis` Umgebungen, aber die `axis` Deklaration hat eine Reihe neuer Parameter:

**x tick label style={/pgf/number format/1000 sep=}**

Dieses Codefragment definiert einen vollständigen Stil für den Plot. Mit diesem Stil können Sie mehrere \addplot-Befehle innerhalb dieser axis-Umgebung einfügen; sie passen zusammen und sehen ohne weitere Anpassungen gut aus (der unten beschriebene Parameter ybar ist dafür zwingend erforderlich).

**enlargelimits=0.05.**

Das Erweitern der Grenzen in einem Balkendiagramm ist notwendig, weil diese Art von Diagrammen oft etwas zusätzlichen Platz oberhalb der Balken benötigt, um besser auszusehen und/oder eine Beschriftung hinzuzufügen. Die Zahl 0.05 ist dann relativ zur Gesamthöhe des Plots.

**legend style={at={(0.5,-0.2)}, anchor=north,legend columns=-1}**

Auch das funktioniert die meiste Zeit problemlos. Falls nötig, ändern Sie den Wert -0.2, um die Legende näher an bzw. weiter von der x-Achse zu platzieren.

**ybar interval=0.7,**

Dicke jedes Balkens. 1 bedeutet, dass die Balken direkt nebeneinander ohne Lücken stehen, und 0 bedeutet, dass es keine Balken, sondern nur vertikale Linien gibt.

Die `coordinates` in dieser Art von Plot den Basispunkt des Balkens und seine Höhe bestimmen.

Die Beschriftungen auf der y-Achse werden bis zu 4 Ziffern anzeigen. Wenn die Zahlen, mit denen Sie arbeiten, größer als 9999 sind `pgfplots` wird die gleiche Notation wie im Beispiel verwendet.

## 3D-Plots

`pgfplots` verfügt über die 3D-Plot-Funktionen, die Sie von einer Plotsoftware erwarten können.

### Mathematische Ausdrücke darstellen

Dazu gibt es ein einfaches Beispiel in der [Einleitung](#introduction), arbeiten wir an etwas etwas Komplexerem:

```latex
\begin{tikzpicture}
\begin{axis}[
    title=Beispiel mit dem mesh-Parameter,
    Achsen ausblenden,
    colormap/cool,
]
\addplot3[
    mesh,
    samples=50,
    domain=-8:8,
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\addlegendentry{\(\frac{sin(r)}{r}\)}
\end{axis}
\end{tikzpicture}
```

[Öffnen Sie dieses `pgfplots` 3D-Beispiel in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+3D+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%5B%0A++++title%3DExample+using+the+mesh+parameter%2C%0A++++hide+axis%2C%0A++++colormap%2Fcool%2C%0A%5D%0A%5Caddplot3%5B%0A++++mesh%2C%0A++++samples%3D50%2C%0A++++domain%3D-8%3A8%2C%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Caddlegendentry%7B%5C%28%5Cfrac%7Bsin%28r%29%7D%7Br%7D%5C%29%7D%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Die Ausgabe dieses Codes ist im folgenden Bild zu sehen – die Präambel des LaTeX-Dokuments wird beim Öffnen des Links automatisch hinzugefügt:

![Pgfplots3dexample.png](/files/2206abddc315b606496d726355622ef62311cafa)

#### Erklärung des Codes

Die meisten Befehle hier wurden bereits erklärt, aber es gibt 3 neue Dinge:

**Achsen ausblenden**

Diese Option in der axis-Umgebung ist selbsterklärend, die Achsen werden nicht angezeigt.

**colormap/cool**

Ist das im Plot zu verwendende Farbschema. Weitere Farbschemata finden Sie im Referenzhandbuch.

**mesh**

Diese Option ist ebenfalls selbsterklärend; siehe auch den Parameter surf im Einführungsbeispiel.

**Hinweis**: Bei der Arbeit mit trigonometrischen Funktionen `pgfplots` werden standardmäßig Grad als Einheiten verwendet; wenn der Winkel in Radiant angegeben ist (wie in diesem Beispiel), müssen Sie die `deg` Funktion verwenden, um in Grad umzurechnen.

### Konturplots

In `pgfplots` ist es möglich, Konturplots zu zeichnen, aber die Daten müssen zuvor von einem externen Programm berechnet werden. Schauen wir uns ein Beispiel an:

```latex
\begin{tikzpicture}
\begin{axis}
[
    title={Konturplot, Ansicht von oben},
    view={0}{90}
]
\addplot3[
    contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}
]
{sin(deg(sqrt(x^2+y^2)))/sqrt(x^2+y^2)};
\end{axis}
\end{tikzpicture}
```

[Öffnen Sie dieses `pgfplots` Konturplot-Beispiel in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+contour+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5B%0A++++title%3D%7BContour+plot%2C+view+from+top%7D%2C%0A++++view%3D%7B0%7D%7B90%7D%0A%5D%0A%5Caddplot3%5B%0A++++contour+gnuplot%3D%7Blevels%3D%7B0.8%2C+0.4%2C+0.2%2C+-0.2%7D%7D%0A%5D%0A%7Bsin%28deg%28sqrt%28x%5E2%2By%5E2%29%29%29%2Fsqrt%28x%5E2%2By%5E2%29%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

Die Ausgabe dieses Codes ist im folgenden Bild zu sehen – die Präambel des LaTeX-Dokuments wird beim Öffnen des Links automatisch hinzugefügt:

![Contourplotexample.png](/files/78e684177ca5d7df7d61106b320c4f7c674f8c43)

#### Erklärung des Codes

Dies ist ein Plot einiger Konturlinien für dieselbe Gleichung, die im vorherigen Abschnitt verwendet wurde. Der Wert des `Titel` Parameters steht in geschweiften Klammern, weil er ein Komma enthält; daher verwenden wir die Gruppierungsklammern, um Verwechslungen mit den anderen an die `\begin{axis}` Deklaration übergebenen Parametern zu vermeiden. Es gibt zwei neue Befehle:

**view={0}{90}**

Dies ändert die Ansicht des Plots. Der Parameter wird an die axis-Umgebung übergeben, was bedeutet, dass dies in jeder anderen Art von 3D-Plot verwendet werden kann. Der erste Wert ist eine Rotation in Grad um die z-Achse; der zweite Wert rotiert die Ansicht um die x-Achse. In diesem Beispiel erhalten wir mit einer 0°-Rotation um die z-Achse und einer 90°-Rotation um die x-Achse eine Ansicht des Plots von oben.

**contour gnuplot={levels={0.8, 0.4, 0.2, -0.2}}**

Diese Codezeile tut zwei Dinge: Erstens teilt sie LaTeX mit, dass die externe Software gnuplot verwendet werden soll, um die Konturlinien zu berechnen; das funktioniert in Overleaf einwandfrei, aber wenn Sie diesen Befehl in Ihrer lokalen LaTeX-Installation verwenden möchten, müssen Sie zuerst gnuplot installieren (matlab funktioniert ebenfalls; schreiben Sie in diesem Fall matlab statt gnuplot in den Befehl). Zweitens ist der Unterparameter levels eine Liste von Werten für Höhenniveaus, auf denen die Konturlinien berechnet werden sollen.

### Eine Oberfläche aus Daten darstellen

Um einen Datensatz als 3D-Oberfläche zu zeichnen, brauchen wir nur die Koordinaten jedes Punkts. Diese Koordinaten können eine ungeordnete Menge sein oder, in diesem Fall, eine Matrix:

```latex
\begin{tikzpicture}
\begin{axis}
\addplot3[
    surf,
]
coordinates {
(0,0,0) (0,1,0) (0,2,0)

(1,0,0) (1,1,0.6) (1,2,0.7)

(2,0,0) (2,1,0.7) (2,2,1.8)
};
\end{axis}
\end{tikzpicture}
```

[Öffnen Sie dieses `pgfplots` 3D-Oberflächenbeispiel in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=plotting+a+surface+from+data+with+pgfplots\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A%5Caddplot3%5B%0A++++surf%2C%0A%5D+%0Acoordinates+%7B%0A%280%2C0%2C0%29+%280%2C1%2C0%29+%280%2C2%2C0%29%0A%0A%281%2C0%2C0%29+%281%2C1%2C0.6%29+%281%2C2%2C0.7%29%0A%0A%282%2C0%2C0%29+%282%2C1%2C0.7%29+%282%2C2%2C1.8%29%0A%7D%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%0A%5Cend%7Bdocument%7D)

Die Ausgabe dieses Codes ist im folgenden Bild zu sehen – die Präambel des LaTeX-Dokuments wird beim Öffnen des Links automatisch hinzugefügt:

![3dsurfacedata.png](/files/d4338a4edd7ae43b5cb5e7619d2177b1ac8d0b46)

#### Erklärung der Daten

Die an den `coordinates` Parameter übergebenen Punkte werden als in einer 3 × 3-Matrix enthalten behandelt, wobei eine Leerzeile als Trennzeichen für jede Matrixzeile verwendet wird.

Alle Optionen für 3D-Plots in diesem Artikel gelten auch für Datenoberflächen.

### Parametrischer Plot

Die Syntax für parametrische Plots ist etwas anders. Schauen wir uns ein Beispiel an:

```latex
\begin{tikzpicture}
\begin{axis}
    [
    view={60}{30},
    ]
\addplot3[
    domain=0:5*pi,
    samples = 60,
    samples y=0,
]
({sin(deg(x))},
{cos(deg(x))},
{x});
\end{axis}
\end{tikzpicture}
```

[Öffnen Sie dieses `pgfplots` parametrisches Plot-Beispiel in Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=pgfplots+parametric+plot+example\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%5Bmargin%3D0.5in%5D%7Bgeometry%7D%0A%5Cusepackage%7Bpgfplots%7D%0A%5Cpgfplotsset%7Bwidth%3D10cm%2Ccompat%3D1.9%7D%0A%25%5Cusepgfplotslibrary%7Bexternal%7D%0A%25%5Ctikzexternalize%0A%5Cbegin%7Bdocument%7D%0A%5Cbegin%7Btikzpicture%7D%0A%5Cbegin%7Baxis%7D%0A++++%5B%0A++++view%3D%7B60%7D%7B30%7D%2C%0A++++%5D%0A%5Caddplot3%5B%0A++++domain%3D0%3A5%2Api%2C%0A++++samples+%3D+60%2C%0A++++samples+y%3D0%2C%0A%5D%0A%28%7Bsin%28deg%28x%29%29%7D%2C%0A%7Bcos%28deg%28x%29%29%7D%2C%0A%7Bx%7D%29%3B%0A%5Cend%7Baxis%7D%0A%5Cend%7Btikzpicture%7D%0A%5Cend%7Bdocument%7D)

Die Ausgabe dieses Codes ist im folgenden Bild zu sehen – die Präambel des LaTeX-Dokuments wird beim Öffnen des Links automatisch hinzugefügt:

![Parametricplot.png](/files/50df0bae53350b6f5f111bf0c3bfb8423b21759e)

#### Erklärung des Codes

In diesem Beispiel gibt es nur zwei neue Dinge: erstens die `samples y=0` um zu verhindern `pgfplots` dass die extremen Punkte der Spirale miteinander verbunden werden, und zweitens die Art und Weise, wie die zu zeichnende Funktion an die `addplot3` Umgebung übergeben wird. Jede Parameterfunktion wird innerhalb geschweifter Klammern gruppiert, und die drei Parameter werden durch eine runde Klammer getrennt.

## Referenzhandbuch

| Befehl/Option/Umgebung | Beschreibung                                                                                                                                                                                     | Mögliche Werte                                                                                                                                                                                                                                                                                                           |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **axis**               | Normale Plots mit linearer Skalierung                                                                                                                                                            |                                                                                                                                                                                                                                                                                                                          |
| **semilogxaxis**       | logarithmische Skalierung von x und normale Skalierung für y                                                                                                                                     |                                                                                                                                                                                                                                                                                                                          |
| **semilogyaxis**       | logarithmische Skalierung für y und normale Skalierung für x                                                                                                                                     |                                                                                                                                                                                                                                                                                                                          |
| **loglogaxis**         | logarithmische Skalierung für die x- und y-Achsen                                                                                                                                                |                                                                                                                                                                                                                                                                                                                          |
| **Achsenlinien**       | ändert die Art und Weise, wie die Achsen gezeichnet werden. Standard ist '*Box*                                                                                                                  | box, left, middle, center, right, none                                                                                                                                                                                                                                                                                   |
| **legend pos**         | Position des Legendenkastens                                                                                                                                                                     | south west, south east, north west, north east, outer north east                                                                                                                                                                                                                                                         |
| **mark**               | Art der bei der Datenvisualisierung verwendeten Markierungen. Wenn ein einzelnes Zeichen verwendet wird, ist das Erscheinungsbild des Zeichens dem tatsächlichen Markierungssymbol sehr ähnlich. | \*, x , +, \|, o, asterisk, star, 10-pointed star, oplus, oplus\*, otimes, otimes\*, square, square\*, triangle, triangle\*, diamond, halfdiamond\*, halfsquare\*, right\*, left\*, Mercedes star, Mercedes star flipped, halfcircle, halfcircle\*, pentagon, pentagon\*, cubes. (cubes funktionieren nur bei 3D-Plots). |
| **colormap**           | Farbschema, das in einem Plot verwendet werden kann; kann personalisiert werden, aber es gibt einige vordefinierte Colormaps                                                                     | hot, hot2, jet, blackwhite, bluered, cool, greenyellow, redyellow, violet.                                                                                                                                                                                                                                               |

## Weiterführende Lektüre

Weitere Informationen finden Sie unter:

* [Farben in LaTeX verwenden](/latex/de/formatierung/13-using-colors-in-latex.md)
* [TikZ-Paket](/latex/de/abbildungen-und-tabellen/05-tikz-package.md)
* [Externe Auslagerung von pgfplots und tikzpictures](/latex/de/fragen-and-antworten/60-i-have-a-lot-of-tikz-matlab2tikz-or-pgfplots-figures-so-i-m-getting-a-compilation-timeout.-can-i.md)
* [Einfügen von Bildern](/latex/de/weitere-themen/27-inserting-images.md)
* [Verzeichnisse der Tabellen und Abbildungen](/latex/de/abbildungen-und-tabellen/03-lists-of-tables-and-figures.md)
* [Positionierung von Bildern und Tabellen](/latex/de/abbildungen-und-tabellen/02-positioning-images-and-tables.md)
* [Diagramme direkt in LaTeX zeichnen](/latex/de/abbildungen-und-tabellen/04-picture-environment.md)
* [Die **pgfplots** Paketdokumentation](http://mirrors.ctan.org/graphics/pgf/contrib/pgfplots/doc/pgfplots.pdf).
* [Die TikZ- und PGF-Pakete: Handbuch für Version 3.0.0](http://mirror.utexas.edu/ctan/graphics/pgf/base/doc/pgfmanual.pdf)
* [TikZ- und PGF-Beispiele auf TeXample.net](http://www.texample.net/tikz/examples/all/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/de/fachspezifisch/08-pgfplots-package.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
