Wykresy danych z pliku CSV
Dodaj plik do projektu i napisz \addplot table[x=col1, y=col2, col sep=comma] {file.csv}; wewnątrz axis pgfplots.
Wykres dwóch kolumn pliku
Prześlij plik CSV do projektu (albo utwórz go w nim). Pierwszy wiersz nazywa kolumny. x= i y= wybierają je po nazwie, a col sep=comma mówi, że wartości oddzielają przecinki.
Ta strona korzysta z małego pliku 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.8Temperatura w poszczególnych miesiącach z pliku CSV
\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}Pliki w folderze również działają: zapisz ścieżkę tak jak w projekcie, na przykład {data/weather.csv}.
Kilka kolumn, kolumny błędów i wartości obliczane
Wczytaj ten sam plik raz na każdą serię. y error= bierze słupki błędów z kolumny, a y expr= oblicza wartość z wiersza, z \thisrow{name} dla kolumny.
Dwie serie z jednego pliku
\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}Jednorazowe wczytanie tabeli
\pgfplotstableread wczytuje plik do makra, z którego może potem korzystać każdy \addplot. To krótszy zapis, gdy ta sama tabela zasila kilka wykresów.
\pgfplotstableread i dwa wykresy
\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}Dane wewnątrz dokumentu: filecontents
Małe zbiory danych mogą znajdować się w samym pliku .tex. filecontents* zapisuje swoją zawartość jako plik o podanej nazwie, który potem odczytuje \addplot table. Plik stoi w preambule, przed \begin{document}.
Dane zapisane za pomocą 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}Tutaj kolumny są oddzielone spacjami, co jest domyślnym ustawieniem pgfplots, więc col sep nie jest potrzebne.
Opcje tabeli
| Opcja | Co robi | W Scissor LaTeX |
|---|---|---|
x=name, y=name | kolumny po nazwie | Działa |
x index=0, y index=1 | kolumny po numerze, od 0 | Działa |
col sep=comma | także space, tab, semicolon, & | Działa |
header=false | pierwszy wiersz to dane, nie nazwy | Działa |
skip first n=2 | pomija pierwsze wiersze | Działa |
x expr=, y expr= | oblicza wartość, z \thisrow{name}, \thisrowno{n} lub \coordindex | Działa |
y error=, x error= | kolumny słupków błędów | Działa |
comment chars=! | dodatkowe znaki komentarza (wiersze z # i % są zawsze pomijane) | Działa |
\pgfplotstableread | wczytuje tabelę do makra | Działa |
\pgfplotstabletypeset | wypisuje tabelę jako tabelę LaTeX | Nieobsługiwane: pomijane z komunikatem |
Puste komórki, nan i inf są traktowane jako brakujące wartości i pomijane.
Gdy coś pójdzie nie tak
Jeśli plik .csv zostanie wczytany bez col sep=comma, Scissor LaTeX i tak znajdzie przecinki, więc wykres zostanie narysowany, ale karta Problemy poprosi o dodanie tej opcji. Instalacja TeX niczego by nie zgadywała, a wykres by się tam nie udał.
Brak col sep: narysowane, z przypomnieniem
\begin{tikzpicture}
\begin{axis}[width=6cm, height=4.5cm]
\addplot table[x=month, y=temp] {data-from-csv-weather.csv};
\end{axis}
\end{tikzpicture}Karta Problemy: Add col sep=comma to read data-from-csv-weather.csv so it also works in LaTeX
Plik, którego nie ma w projekcie, powoduje pominięcie danego wykresu. Oś i tak jest rysowana, a karta Problemy podaje nazwę brakującego pliku.
Brakujący plik
\begin{tikzpicture}
\begin{axis}[width=6cm, height=4.5cm]
\addplot table[col sep=comma] {results.csv};
\end{axis}
\end{tikzpicture}Karta Problemy: Data file not in the project: results.csv
Czym różni się od instalacji TeX
Wszystko tutaj to składnia pgfplots, więc pliki kompilują się także w instalacji TeX. Dokumentacja: ctan.org/pkg/pgfplots. Słupki błędów z kolumn opisuje strona słupków błędów.
Pytania i odpowiedzi
Jak narysować plik CSV w LaTeX?
Umieść plik w projekcie i napisz w osi \addplot table[x=a, y=b, col sep=comma] {file.csv};, z nazwami swoich kolumn w miejsce a i b.
Mój CSV używa średników. Co mam napisać?
Użyj col sep=semicolon. Dla tabulatorów użyj col sep=tab.
Czy mogę narysować kolumnę względem numeru wiersza?
Tak: table[x expr=\coordindex, y=name] używa 0, 1, 2 i tak dalej jako wartości x.
Każdy przykład na tej stronie jest składany przez Scissor LaTeX podczas budowania witryny. Ostatnia aktualizacja: 2026-11-07.