Langkau ke kandungan

Memplot data daripada fail CSV

Tambah fail ke projek anda dan tulis \addplot table[x=col1, y=col2, col sep=comma] {file.csv}; di dalam axis pgfplots.

Plot dua lajur daripada fail

Muat naik fail CSV ke projek anda (atau buatnya di situ). Baris pertama menamakan lajur. x= dan y= memilih lajur mengikut nama, dan col sep=comma menyatakan bahawa koma memisahkan nilai.

Halaman ini menggunakan fail kecil, 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

Suhu mengikut bulan daripada fail CSV

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\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}
Disusun atur oleh Scissor LaTeX: Suhu mengikut bulan daripada fail CSV

Fail dalam folder juga berfungsi: tulis laluan seperti dalam projek, contohnya {data/weather.csv}.

Beberapa lajur, lajur ralat dan nilai dikira

Baca fail yang sama sekali bagi setiap siri. y error= mengambil bar ralat daripada lajur, dan y expr= mengira nilai daripada baris, dengan \thisrow{name} untuk sesuatu lajur.

Dua siri daripada satu fail

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\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}
Disusun atur oleh Scissor LaTeX: Dua siri daripada satu fail

Membaca jadual sekali sahaja

\pgfplotstableread membaca fail ke dalam makro, yang kemudian boleh digunakan oleh setiap \addplot. Cara ini lebih ringkas apabila jadual yang sama digunakan untuk beberapa plot.

\pgfplotstableread dan dua plot

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\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}

Data di dalam dokumen: filecontents

Set data kecil boleh disimpan dalam fail .tex itu sendiri. filecontents* menulis kandungannya sebagai fail dengan nama itu, yang kemudian dibaca oleh \addplot table. Fail itu berada dalam mukadimah, sebelum \begin{document}.

Data yang ditulis dengan 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}

Di sini lajur dipisahkan oleh ruang, iaitu lalai pgfplots, jadi col sep tidak diperlukan.

Pilihan jadual

PilihanFungsinyaDalam Scissor LaTeX
x=name, y=namelajur mengikut namaBerfungsi
x index=0, y index=1lajur mengikut nombor, bermula dari 0Berfungsi
col sep=commajuga space, tab, semicolon, &Berfungsi
header=falsebaris pertama ialah data, bukan namaBerfungsi
skip first n=2mengabaikan baris-baris pertamaBerfungsi
x expr=, y expr=mengira nilai, dengan \thisrow{name}, \thisrowno{n} atau \coordindexBerfungsi
y error=, x error=lajur bar ralatBerfungsi
comment chars=!aksara ulasan tambahan (baris # dan % sentiasa dilangkau)Berfungsi
\pgfplotstablereadmembaca jadual ke dalam makroBerfungsi
\pgfplotstabletypesetmencetak jadual sebagai jadual LaTeXTidak disokong: dilangkau dengan mesej

Sel kosong, nan dan inf dianggap sebagai nilai yang tiada dan ditinggalkan.

Apabila berlaku masalah

Jika fail .csv dibaca tanpa col sep=comma, Scissor LaTeX tetap menemui koma, jadi plot dilukis, tetapi tab Masalah meminta anda menambah pilihan itu. Pemasangan TeX tidak akan meneka, dan plot akan gagal di sana.

col sep tiada: dilukis, dengan peringatan

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[x=month, y=temp] {data-from-csv-weather.csv};
  \end{axis}
\end{tikzpicture}

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

Fail yang tiada dalam projek menyebabkan plot itu ditinggalkan. Paksi masih dilukis, dan tab Masalah menamakan fail yang tiada.

Fail yang tiada

LaTeXMukadimah: \usepackage{pgfplots}Buka dalam editor (dibuka dalam tab baharu)
\begin{tikzpicture}
  \begin{axis}[width=6cm, height=4.5cm]
    \addplot table[col sep=comma] {results.csv};
  \end{axis}
\end{tikzpicture}

Tab Masalah: Data file not in the project: results.csv

Perbezaan dengan pemasangan TeX

Semua di sini ialah sintaks pgfplots, jadi fail-fail ini juga dikompil dalam pemasangan TeX. Manual: ctan.org/pkg/pgfplots. Untuk bar ralat daripada lajur, lihat bar ralat.

Soalan dan jawapan

Bagaimanakah cara memplot fail CSV dalam LaTeX?

Letakkan fail dalam projek dan tulis \addplot table[x=a, y=b, col sep=comma] {file.csv}; dalam paksi, dengan nama lajur anda untuk a dan b.

CSV saya menggunakan koma bertitik. Apakah yang perlu saya tulis?

Gunakan col sep=semicolon. Untuk tab, gunakan col sep=tab.

Bolehkah saya memplot lajur berbanding nombor baris?

Ya: table[x expr=\coordindex, y=name] menggunakan 0, 1, 2 dan seterusnya sebagai nilai x.

Setiap contoh di halaman ini disusun atur oleh Scissor LaTeX semasa laman dibina. Kali terakhir dikemas kini 2026-11-07.