Vẽ đồ thị dữ liệu từ tệp CSV
Thêm tệp vào dự án của bạn và viết \addplot table[x=col1, y=col2, col sep=comma] {file.csv}; bên trong một axis của pgfplots.
Vẽ hai cột của một tệp
Tải tệp CSV lên dự án của bạn (hoặc tạo nó ngay tại đó). Dòng đầu tiên đặt tên các cột. x= và y= chọn cột theo tên, và col sep=comma cho biết các giá trị được ngăn cách bằng dấu phẩy.
Trang này dùng một tệp nhỏ, 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.8Nhiệt độ theo tháng từ một tệp 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}Tệp trong thư mục cũng hoạt động: hãy viết đường dẫn như trong dự án, ví dụ {data/weather.csv}.
Nhiều cột, cột sai số và giá trị tính toán
Đọc cùng một tệp một lần cho mỗi chuỗi. y error= lấy thanh sai số từ một cột, và y expr= tính một giá trị từ hàng, với \thisrow{name} cho một cột.
Hai chuỗi từ một tệp
\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}Đọc bảng một lần
\pgfplotstableread đọc một tệp vào một macro, mà sau đó mọi \addplot đều có thể dùng. Cách này ngắn gọn hơn khi cùng một bảng cung cấp dữ liệu cho nhiều đồ thị.
\pgfplotstableread và hai đồ thị
\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}Dữ liệu bên trong tài liệu: filecontents
Các tập dữ liệu nhỏ có thể nằm ngay trong tệp .tex. filecontents* ghi nội dung của nó thành một tệp mang tên đó, rồi \addplot table đọc tệp này. Tệp nằm trong phần mở đầu, trước \begin{document}.
Dữ liệu được ghi bằng 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}Ở đây các cột được ngăn cách bằng dấu cách, mặc định của pgfplots, nên không cần col sep.
Các tùy chọn của bảng
| Tùy chọn | Tác dụng | Trong Scissor LaTeX |
|---|---|---|
x=name, y=name | cột theo tên | Hoạt động |
x index=0, y index=1 | cột theo số thứ tự, bắt đầu từ 0 | Hoạt động |
col sep=comma | cũng có space, tab, semicolon, & | Hoạt động |
header=false | dòng đầu tiên là dữ liệu, không phải tên | Hoạt động |
skip first n=2 | bỏ qua các dòng đầu tiên | Hoạt động |
x expr=, y expr= | tính một giá trị, với \thisrow{name}, \thisrowno{n} hoặc \coordindex | Hoạt động |
y error=, x error= | các cột thanh sai số | Hoạt động |
comment chars=! | thêm ký tự chú thích (các dòng # và % luôn được bỏ qua) | Hoạt động |
\pgfplotstableread | đọc một bảng vào một macro | Hoạt động |
\pgfplotstabletypeset | in một bảng thành bảng LaTeX | Không hỗ trợ: bị bỏ qua kèm thông báo |
Ô trống, nan và inf được coi là giá trị thiếu và bị bỏ ra.
Khi có lỗi xảy ra
Nếu một tệp .csv được đọc mà không có col sep=comma, Scissor LaTeX vẫn tìm ra các dấu phẩy, nên đồ thị vẫn được vẽ, nhưng thẻ Sự cố đề nghị bạn thêm tùy chọn này. Một bản cài đặt TeX sẽ không đoán, và đồ thị sẽ thất bại ở đó.
Thiếu col sep: vẫn vẽ, kèm lời nhắc
\begin{tikzpicture}
\begin{axis}[width=6cm, height=4.5cm]
\addplot table[x=month, y=temp] {data-from-csv-weather.csv};
\end{axis}
\end{tikzpicture}Thẻ Sự cố: Add col sep=comma to read data-from-csv-weather.csv so it also works in LaTeX
Một tệp không có trong dự án sẽ khiến đồ thị đó bị bỏ ra. Trục vẫn được vẽ, và thẻ Sự cố nêu tên tệp bị thiếu.
Một tệp bị thiếu
\begin{tikzpicture}
\begin{axis}[width=6cm, height=4.5cm]
\addplot table[col sep=comma] {results.csv};
\end{axis}
\end{tikzpicture}Thẻ Sự cố: Data file not in the project: results.csv
Khác biệt so với một bản cài đặt TeX
Mọi thứ ở đây đều là cú pháp pgfplots, nên các tệp cũng biên dịch được trong một bản cài đặt TeX. Tài liệu hướng dẫn: ctan.org/pkg/pgfplots. Về thanh sai số từ các cột, xem thanh sai số.
Hỏi và đáp
Làm thế nào để vẽ đồ thị từ tệp CSV trong LaTeX?
Đặt tệp vào dự án và viết \addplot table[x=a, y=b, col sep=comma] {file.csv}; trong một trục, thay a và b bằng tên cột của bạn.
Tệp CSV của tôi dùng dấu chấm phẩy. Tôi viết gì?
Dùng col sep=semicolon. Với ký tự tab, dùng col sep=tab.
Tôi có thể vẽ một cột theo số thứ tự hàng không?
Có: table[x expr=\coordindex, y=name] dùng 0, 1, 2, v.v. làm giá trị x.
Mọi ví dụ trên trang này đều được Scissor LaTeX dàn trang khi xây dựng trang web. Cập nhật lần cuối 2026-11-07.