رفتن به محتوا

رسم نمودار از داده‌های یک فایل CSV

فایل را به پروژه‌تان اضافه کنید و درون یک axis بستهٔ pgfplots بنویسید \addplot table[x=col1, y=col2, col sep=comma] {file.csv};.

رسم دو ستون از یک فایل

فایل 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

\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} برای یک ستون.

دو سری از یک فایل

\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 و دو نمودار

\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 جاافتاده: کشیده می‌شود، با یک یادآوری

\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

فایلی که در پروژه نیست باعث می‌شود آن نمودار کنار گذاشته شود. محور همچنان کشیده می‌شود و زبانهٔ مشکلات نام فایل گمشده را می‌آورد.

یک فایل گمشده

\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. برای میله‌های خطا از روی ستون‌ها، میله‌های خطا را ببینید.

پرسش و پاسخ

چطور در LaTeX یک فایل CSV را رسم کنم؟

فایل را در پروژه بگذارید و در یک محور بنویسید \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.