Naar de inhoud

Data uit een CSV-bestand plotten

Voeg het bestand toe aan je project en schrijf \addplot table[x=col1, y=col2, col sep=comma] {file.csv}; in een pgfplots-axis.

Twee kolommen van een bestand plotten

Upload het CSV-bestand naar je project (of maak het daar aan). De eerste regel noemt de kolommen. x= en y= kiezen ze op naam, en col sep=comma zegt dat komma's de waarden scheiden.

Deze pagina gebruikt een klein bestand, data-from-csv-weather.csv:

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.8

Temperatuur per maand uit een CSV-bestand

LaTeXPreambule: \usepackage{pgfplots}Openen in de editor (opent in een nieuw tabblad)
\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}
Gezet door Scissor LaTeX: Temperatuur per maand uit een CSV-bestand

Bestanden in een map werken ook: schrijf het pad zoals in het project, bijvoorbeeld {data/weather.csv}.

Meerdere kolommen, foutkolommen en berekende waarden

Lees hetzelfde bestand één keer per reeks. y error= haalt foutbalken uit een kolom, en y expr= berekent een waarde uit de rij, met \thisrow{name} voor een kolom.

Twee reeksen uit één bestand

LaTeXPreambule: \usepackage{pgfplots}Openen in de editor (opent in een nieuw tabblad)
\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}
Gezet door Scissor LaTeX: Twee reeksen uit één bestand

Een tabel één keer inlezen

\pgfplotstableread leest een bestand in een macro, die elke \addplot daarna kan gebruiken. Dat is korter als dezelfde tabel meerdere grafieken voedt.

\pgfplotstableread en twee grafieken

LaTeXPreambule: \usepackage{pgfplots}Openen in de editor (opent in een nieuw tabblad)
\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}

Data in het document: filecontents

Kleine datasets kunnen in het .tex-bestand zelf staan. filecontents* schrijft de inhoud als bestand met die naam, dat \addplot table daarna leest. Het bestand staat in de preambule, vóór \begin{document}.

Data geschreven met filecontents*

\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 zijn de kolommen gescheiden door spaties, de standaard van pgfplots, dus col sep is niet nodig.

Tabelopties

OptieWat het doetIn Scissor LaTeX
x=name, y=namekolommen op naamWerkt
x index=0, y index=1kolommen op nummer, vanaf 0Werkt
col sep=commaook space, tab, semicolon, &Werkt
header=falsede eerste regel is data, geen namenWerkt
skip first n=2de eerste regels negerenWerkt
x expr=, y expr=een waarde berekenen, met \thisrow{name}, \thisrowno{n} of \coordindexWerkt
y error=, x error=kolommen voor foutbalkenWerkt
comment chars=!meer commentaartekens (regels met # en % worden altijd overgeslagen)Werkt
\pgfplotstablereadeen tabel in een macro inlezenWerkt
\pgfplotstabletypeseteen tabel als LaTeX-tabel afdrukkenNiet ondersteund: overgeslagen met een melding

Lege cellen, nan en inf gelden als ontbrekende waarden en worden weggelaten.

Als er iets misgaat

Wordt een .csv-bestand gelezen zonder col sep=comma, dan vindt Scissor LaTeX de komma's toch, dus de grafiek wordt getekend, maar het tabblad Problemen vraagt je de optie toe te voegen. Een TeX-installatie zou niet raden, en daar zou de grafiek mislukken.

Ontbrekende col sep: getekend, met een herinnering

LaTeXPreambule: \usepackage{pgfplots}Openen in de editor (opent in een nieuw tabblad)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[x=month, y=temp] {data-from-csv-weather.csv};
  \end{axis}
\end{tikzpicture}

Tabblad Problemen: Add col sep=comma to read data-from-csv-weather.csv so it also works in LaTeX

Een bestand dat niet in het project staat, laat die grafiek weg. De as wordt toch getekend, en het tabblad Problemen noemt het ontbrekende bestand.

Een ontbrekend bestand

LaTeXPreambule: \usepackage{pgfplots}Openen in de editor (opent in een nieuw tabblad)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[col sep=comma] {results.csv};
  \end{axis}
\end{tikzpicture}

Tabblad Problemen: Data file not in the project: results.csv

Wat anders is dan in een TeX-installatie

Alles hier is pgfplots-syntaxis, dus de bestanden compileren ook in een TeX-installatie. Handleiding: ctan.org/pkg/pgfplots. Voor foutbalken uit kolommen, zie foutbalken.

Vragen en antwoorden

Hoe plot ik een CSV-bestand in LaTeX?

Zet het bestand in het project en schrijf \addplot table[x=a, y=b, col sep=comma] {file.csv}; in een as, met je eigen kolomnamen voor a en b.

Mijn CSV gebruikt puntkomma's. Wat schrijf ik?

Gebruik col sep=semicolon. Voor tabs gebruik je col sep=tab.

Kan ik een kolom tegen het rijnummer plotten?

Ja: table[x expr=\coordindex, y=name] gebruikt 0, 1, 2 enzovoort als x-waarden.

Elk voorbeeld op deze pagina wordt door Scissor LaTeX gezet wanneer de site wordt gebouwd. Laatst bijgewerkt op 2026-11-07.