본문으로 건너뛰기

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를 씁니다.

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 파일에서 읽은 월별 기온

LaTeX프리앰블: \usepackage{pgfplots}편집기에서 열기 (새 탭에서 열림)
\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}으로 가리킵니다.

파일 하나에서 읽은 두 계열

LaTeX프리앰블: \usepackage{pgfplots}편집기에서 열기 (새 탭에서 열림)
\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와 그래프

LaTeX프리앰블: \usepackage{pgfplots}편집기에서 열기 (새 탭에서 열림)
\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=10부터 세는 번호로 열 지정작동함
col sep=commaspace, 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 누락: 그려지지만 알림이 나옴

LaTeX프리앰블: \usepackage{pgfplots}편집기에서 열기 (새 탭에서 열림)
\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

프로젝트에 없는 파일을 읽는 그래프는 빠집니다. 축은 그대로 그려지고, 문제 탭에 없는 파일의 이름이 나옵니다.

없는 파일

LaTeX프리앰블: \usepackage{pgfplots}편집기에서 열기 (새 탭에서 열림)
\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