CSV 파일의 데이터로 그래프 그리기
파일을 프로젝트에 추가하고, pgfplots axis 안에 \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.8CSV 파일에서 읽은 월별 기온
\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