Daten aus einer CSV-Datei plotten
Fügen Sie die Datei Ihrem Projekt hinzu und schreiben Sie \addplot table[x=col1, y=col2, col sep=comma] {file.csv}; in eine pgfplots-axis.
Zwei Spalten einer Datei plotten
Laden Sie die CSV-Datei in Ihr Projekt hoch (oder legen Sie sie dort an). Die erste Zeile benennt die Spalten. x= und y= wählen sie nach Namen, und col sep=comma gibt an, dass Kommas die Werte trennen.
Diese Seite verwendet eine kleine Datei, data-from-csv-weather.csv:
month,temp,rain,sd
1,1.2,44,0.8
2,2.0,38,0.7
3,5.6,41,0.9
...
12,2.3,46,0.8Temperatur pro Monat aus einer CSV-Datei
\begin{tikzpicture}
\begin{axis}[xlabel={Month}, ylabel={Temperature ($^\circ$C)}, xtick={1,...,12}]
\addplot table[x=month, y=temp, col sep=comma] {data-from-csv-weather.csv};
\end{axis}
\end{tikzpicture}Dateien in einem Ordner funktionieren ebenfalls: Schreiben Sie den Pfad wie im Projekt, zum Beispiel {data/weather.csv}.
Mehrere Spalten, Fehlerspalten und berechnete Werte
Lesen Sie dieselbe Datei einmal pro Reihe. y error= nimmt Fehlerbalken aus einer Spalte, und y expr= berechnet einen Wert aus der Zeile, mit \thisrow{name} für eine Spalte.
Zwei Reihen aus einer Datei
\begin{tikzpicture}
\begin{axis}[xlabel={Month}, ylabel={Value}, legend pos=north west, ymin=0]
\addplot+[error bars/.cd, y dir=both, y explicit]
table[x=month, y=temp, y error=sd, col sep=comma] {data-from-csv-weather.csv};
\addplot+[mark=none, dashed]
table[x=month, y expr=\thisrow{rain}/2, col sep=comma] {data-from-csv-weather.csv};
\legend{Temperature ($^\circ$C), Rain / 2 (mm)}
\end{axis}
\end{tikzpicture}Eine Tabelle einmal lesen
\pgfplotstableread liest eine Datei in ein Makro, das dann jedes \addplot verwenden kann. Das ist kürzer, wenn dieselbe Tabelle mehrere Plots speist.
\pgfplotstableread und zwei Plots
\pgfplotstableread[col sep=comma]{data-from-csv-weather.csv}\weather
\begin{tikzpicture}
\begin{axis}[ybar, bar width=6pt, ymin=0, xlabel={Month}, ylabel={Rain (mm)},
xtick={1,...,12}, enlarge x limits=0.06]
\addplot table[x=month, y=rain] {\weather};
\end{axis}
\end{tikzpicture}Daten im Dokument: filecontents
Kleine Datensätze können in der .tex-Datei selbst stehen. filecontents* schreibt seinen Inhalt als Datei dieses Namens, die \addplot table dann liest. Die Datei steht in der Präambel, vor \begin{document}.
Daten, mit filecontents* geschrieben
\documentclass{article}
\usepackage{pgfplots}
\begin{filecontents*}{speed.dat}
t v
0 0
1 4.4
2 8.1
3 11.0
4 13.2
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel={Time (s)}, ylabel={Speed (m/s)}]
\addplot table[x=t, y=v] {speed.dat};
\end{axis}
\end{tikzpicture}
\end{document}Hier sind die Spalten durch Leerzeichen getrennt, die Voreinstellung von pgfplots, col sep ist also nicht nötig.
Tabellenoptionen
| Option | Was sie bewirkt | In Scissor LaTeX |
|---|---|---|
x=name, y=name | Spalten nach Namen | Funktioniert |
x index=0, y index=1 | Spalten nach Nummer, ab 0 | Funktioniert |
col sep=comma | auch space, tab, semicolon, & | Funktioniert |
header=false | die erste Zeile enthält Daten, keine Namen | Funktioniert |
skip first n=2 | die ersten Zeilen ignorieren | Funktioniert |
x expr=, y expr= | einen Wert berechnen, mit \thisrow{name}, \thisrowno{n} oder \coordindex | Funktioniert |
y error=, x error= | Spalten für Fehlerbalken | Funktioniert |
comment chars=! | weitere Kommentarzeichen (Zeilen mit # und % werden immer übersprungen) | Funktioniert |
\pgfplotstableread | eine Tabelle in ein Makro lesen | Funktioniert |
\pgfplotstabletypeset | eine Tabelle als LaTeX-Tabelle ausgeben | Nicht unterstützt: wird mit einer Meldung übersprungen |
Leere Zellen, nan und inf gelten als fehlende Werte und werden weggelassen.
Wenn etwas schiefgeht
Wird eine .csv-Datei ohne col sep=comma gelesen, findet Scissor LaTeX die Kommas trotzdem, der Plot wird also gezeichnet, aber der Tab „Probleme“ bittet Sie, die Option zu ergänzen. Eine TeX-Installation würde nicht raten, und der Plot würde dort scheitern.
Fehlendes col sep: gezeichnet, mit Erinnerung
\begin{tikzpicture}
\begin{axis}[width=6cm, height=4.5cm]
\addplot table[x=month, y=temp] {data-from-csv-weather.csv};
\end{axis}
\end{tikzpicture}Tab „Probleme“: Add col sep=comma to read data-from-csv-weather.csv so it also works in LaTeX
Eine Datei, die nicht im Projekt ist, lässt diesen Plot weg. Die Achse wird trotzdem gezeichnet, und der Tab „Probleme“ nennt die fehlende Datei.
Eine fehlende Datei
\begin{tikzpicture}
\begin{axis}[width=6cm, height=4.5cm]
\addplot table[col sep=comma] {results.csv};
\end{axis}
\end{tikzpicture}Tab „Probleme“: Data file not in the project: results.csv
Was anders ist als in einer TeX-Installation
Alles hier ist pgfplots-Syntax, die Dateien lassen sich also auch in einer TeX-Installation übersetzen. Handbuch: ctan.org/pkg/pgfplots. Für Fehlerbalken aus Spalten siehe Fehlerbalken.
Fragen und Antworten
Wie plotte ich eine CSV-Datei in LaTeX?
Legen Sie die Datei ins Projekt und schreiben Sie \addplot table[x=a, y=b, col sep=comma] {file.csv}; in eine Achse, mit Ihren Spaltennamen für a und b.
Meine CSV-Datei verwendet Semikolons. Was schreibe ich?
Verwenden Sie col sep=semicolon. Für Tabulatoren verwenden Sie col sep=tab.
Kann ich eine Spalte gegen die Zeilennummer plotten?
Ja: table[x expr=\coordindex, y=name] verwendet 0, 1, 2 und so weiter als x-Werte.
Jedes Beispiel auf dieser Seite wird beim Erstellen der Website von Scissor LaTeX gesetzt. Zuletzt aktualisiert am 2026-11-07.