Vai al contenuto

Tracciare dati da un file CSV

Aggiungi il file al tuo progetto e scrivi \addplot table[x=col1, y=col2, col sep=comma] {file.csv}; dentro un axis di pgfplots.

Tracciare due colonne di un file

Carica il file CSV nel tuo progetto (oppure crealo lì). La prima riga dà i nomi alle colonne. x= e y= le scelgono per nome, e col sep=comma dice che i valori sono separati da virgole.

Questa pagina usa un piccolo file, 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

Temperatura per mese da un file CSV

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\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}
Composto da Scissor LaTeX: Temperatura per mese da un file CSV

Funzionano anche i file in una cartella: scrivi il percorso come nel progetto, per esempio {data/weather.csv}.

Più colonne, colonne di errore e valori calcolati

Leggi lo stesso file una volta per ogni serie. y error= prende le barre di errore da una colonna, e y expr= calcola un valore dalla riga, con \thisrow{name} per una colonna.

Due serie da un solo file

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\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}
Composto da Scissor LaTeX: Due serie da un solo file

Leggere una tabella una sola volta

\pgfplotstableread legge un file in una macro, che poi ogni \addplot può usare. È più breve quando la stessa tabella alimenta più grafici.

\pgfplotstableread e due grafici

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\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}

Dati dentro il documento: filecontents

Piccoli insiemi di dati possono stare nel file .tex stesso. filecontents* scrive il suo contenuto come un file con quel nome, che poi \addplot table legge. Il blocco sta nel preambolo, prima di \begin{document}.

Dati scritti con 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}

Qui le colonne sono separate da spazi, l’impostazione predefinita di pgfplots, quindi col sep non serve.

Opzioni delle tabelle

OpzioneCosa faIn Scissor LaTeX
x=name, y=namecolonne per nomeFunziona
x index=0, y index=1colonne per numero, a partire da 0Funziona
col sep=commaanche space, tab, semicolon, &Funziona
header=falsela prima riga contiene dati, non nomiFunziona
skip first n=2ignora le prime righeFunziona
x expr=, y expr=calcolano un valore, con \thisrow{name}, \thisrowno{n} o \coordindexFunziona
y error=, x error=colonne delle barre di erroreFunziona
comment chars=!altri caratteri di commento (le righe con # e % vengono sempre saltate)Funziona
\pgfplotstablereadlegge una tabella in una macroFunziona
\pgfplotstabletypesetstampa una tabella come tabella LaTeXNon supportato: saltato con un messaggio

Celle vuote, nan e inf vengono trattati come valori mancanti e omessi.

Quando qualcosa va storto

Se un file .csv viene letto senza col sep=comma, Scissor LaTeX trova comunque le virgole, quindi il grafico viene disegnato, ma la scheda Problemi ti chiede di aggiungere l’opzione. Un’installazione TeX non indovinerebbe, e lì il grafico fallirebbe.

col sep mancante: disegnato, con un promemoria

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[x=month, y=temp] {data-from-csv-weather.csv};
  \end{axis}
\end{tikzpicture}

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

Un file che non è nel progetto fa saltare quel grafico. Gli assi vengono comunque disegnati, e la scheda Problemi nomina il file mancante.

Un file mancante

LaTeXPreambolo: \usepackage{pgfplots}Apri nell'editor (si apre in una nuova scheda)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[col sep=comma] {results.csv};
  \end{axis}
\end{tikzpicture}

Scheda Problemi: Data file not in the project: results.csv

Cosa cambia rispetto a un’installazione TeX

Tutto qui è sintassi pgfplots, quindi i file compilano anche in un’installazione TeX. Manuale: ctan.org/pkg/pgfplots. Per le barre di errore dalle colonne, vedi barre di errore.

Domande e risposte

Come si traccia un file CSV in LaTeX?

Metti il file nel progetto e scrivi \addplot table[x=a, y=b, col sep=comma] {file.csv}; in un axis, con i nomi delle tue colonne al posto di a e b.

Il mio CSV usa il punto e virgola. Cosa scrivo?

Usa col sep=semicolon. Per le tabulazioni, usa col sep=tab.

Posso tracciare una colonna rispetto al numero di riga?

Sì: table[x expr=\coordindex, y=name] usa 0, 1, 2 e così via come valori x.

Ogni esempio di questa pagina viene composto da Scissor LaTeX quando il sito viene generato. Ultimo aggiornamento: 2026-11-07.