Перейти до вмісту

Графіки з даних у файлі CSV

Додайте файл у свій проєкт і напишіть \addplot table[x=col1, y=col2, col sep=comma] {file.csv}; усередині axis пакета pgfplots.

Графік двох стовпців файлу

Завантажте файл CSV у свій проєкт (або створіть його там). Перший рядок дає назви стовпцям. x= і y= вибирають їх за назвою, а col sep=comma вказує, що значення розділені комами.

На цій сторінці використовується невеликий файл 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

Температура за місяцями з файлу CSV

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\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}
Зверстано в Scissor LaTeX: Температура за місяцями з файлу CSV

Файли в папці теж працюють: пишіть шлях так, як у проєкті, наприклад {data/weather.csv}.

Кілька стовпців, стовпці похибок і обчислені значення

Читайте той самий файл по одному разу на кожен ряд. y error= бере планки похибок зі стовпця, а y expr= обчислює значення з рядка, де \thisrow{name} означає стовпець.

Два ряди з одного файлу

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\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}
Зверстано в Scissor LaTeX: Два ряди з одного файлу

Одноразове читання таблиці

\pgfplotstableread читає файл у макрос, яким потім може користуватися кожен \addplot. Це коротше, коли та сама таблиця живить кілька графіків.

\pgfplotstableread і два графіки

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\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}

Дані всередині документа: filecontents

Невеликі набори даних можуть жити в самому файлі .tex. filecontents* записує свій вміст у файл із цією назвою, який потім читає \addplot table. Блок стоїть у преамбулі, перед \begin{document}.

Дані, записані через 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}

Тут стовпці розділені пробілами, як заведено в pgfplots за замовчуванням, тож col sep не потрібен.

Параметри таблиці

ПараметрЩо робитьУ Scissor LaTeX
x=name, y=nameстовпці за назвоюПрацює
x index=0, y index=1стовпці за номером, починаючи з 0Працює
col sep=commaтакож space, tab, semicolon, &Працює
header=falseперший рядок є даними, а не назвамиПрацює
skip first n=2ігнорувати перші рядкиПрацює
x expr=, y expr=обчислити значення через \thisrow{name}, \thisrowno{n} або \coordindexПрацює
y error=, x error=стовпці планок похибокПрацює
comment chars=!додаткові символи коментаря (рядки з # і % пропускаються завжди)Працює
\pgfplotstablereadпрочитати таблицю в макросПрацює
\pgfplotstabletypesetвивести таблицю як таблицю LaTeXНе підтримується: пропускається з повідомленням

Порожні клітинки, nan і inf вважаються відсутніми значеннями й пропускаються.

Коли щось іде не так

Якщо файл .csv читається без col sep=comma, Scissor LaTeX однаково знаходить коми, тож графік малюється, але вкладка «Проблеми» просить додати цей параметр. Установлений TeX не здогадався б, і там графік не вийшов би.

Без col sep: малюється з нагадуванням

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[x=month, y=temp] {data-from-csv-weather.csv};
  \end{axis}
\end{tikzpicture}

Вкладка «Проблеми»: Add col sep=comma to read data-from-csv-weather.csv so it also works in LaTeX

Якщо файлу немає в проєкті, цей графік пропускається. Вісь усе одно малюється, а вкладка «Проблеми» називає відсутній файл.

Відсутній файл

LaTeXПреамбула: \usepackage{pgfplots}Відкрити в редакторі (відкриється в новій вкладці)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[col sep=comma] {results.csv};
  \end{axis}
\end{tikzpicture}

Вкладка «Проблеми»: Data file not in the project: results.csv

Чим це відрізняється від установленого TeX

Усе тут є синтаксисом pgfplots, тож файли компілюються й в установленому TeX. Посібник: ctan.org/pkg/pgfplots. Про планки похибок зі стовпців див. планки похибок.

Запитання й відповіді

Як побудувати графік з файлу CSV у LaTeX?

Помістіть файл у проєкт і напишіть в осі \addplot table[x=a, y=b, col sep=comma] {file.csv};, підставивши назви своїх стовпців замість a і b.

Мій CSV використовує крапки з комою. Що писати?

Використайте col sep=semicolon. Для табуляцій використайте col sep=tab.

Чи можна побудувати стовпець відносно номера рядка?

Так: table[x expr=\coordindex, y=name] використовує 0, 1, 2 і так далі як значення x.

Кожен приклад на цій сторінці верстається в Scissor LaTeX під час збирання сайту. Оновлено 2026-11-07.