رسم نمودار از دادههای یک فایل 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 استفاده میکند:
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}فایلهای درون یک پوشه هم کار میکنند: مسیر را همانطور که در پروژه است بنویسید، مثلاً {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}یک بار خواندن جدول
\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.