groupplots로 여러 그래프를 격자에 배치하기
groupplots 라이브러리를 불러오고, group style={group size=2 by 1}로 groupplot 환경을 연 다음, 그래프마다 \nextgroupplot으로 시작하세요.
나란히 놓은 두 그래프
groupplots 라이브러리는 여러 축을 같은 크기와 정렬된 테두리로 격자에 배치합니다. group size=2 by 1은 두 열, 한 행이라는 뜻입니다. \nextgroupplot마다 읽는 순서대로 다음 칸이 시작됩니다.
한 행에 놓은 두 그래프
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
group style={group size=2 by 1, horizontal sep=1.5cm},
width=6cm, height=4.5cm, xlabel=$t$,
]
\nextgroupplot[title={Position}, ylabel=$x$]
\addplot[blue, thick, domain=0:4, samples=40] {x^2/2};
\nextgroupplot[title={Velocity}, ylabel=$v$]
\addplot[red, thick, domain=0:4] {x};
\end{groupplot}
\end{tikzpicture}
\end{document}groupplot의 옵션은 모든 칸에 적용되고, \nextgroupplot의 옵션은 그 칸에만 적용됩니다.
레이블을 공유하는 2×2 격자
격자에서는 안쪽의 눈금 레이블과 축 레이블이 반복됩니다. xlabels at=edge bottom과 ylabels at=edge left는 축 레이블을 바깥쪽 그래프에만 남기고, xticklabels at=edge bottom은 x 눈금 레이블에 같은 일을 합니다.
바깥 가장자리에만 레이블이 있는 네 그래프
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
group style={
group size=2 by 2,
horizontal sep=1.2cm, vertical sep=1cm,
xlabels at=edge bottom, ylabels at=edge left,
xticklabels at=edge bottom,
},
width=5.5cm, height=4cm,
xlabel=$t$, ylabel=$y$, domain=0:6, samples=50,
]
\nextgroupplot \addplot[blue] {sin(deg(x))};
\nextgroupplot \addplot[red] {cos(deg(x))};
\nextgroupplot \addplot[teal] {exp(-x/2)};
\nextgroupplot \addplot[orange] {x/6};
\end{groupplot}
\end{tikzpicture}
\end{document}주 그래프와 잔차 패널
칸마다 높이와 범위가 달라도 됩니다. 흔히 쓰는 배치는 데이터 그래프 아래에 x축을 공유하는 작은 잔차 패널을 두는 것입니다.
데이터와 잔차
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
group style={group size=1 by 2, vertical sep=0.4cm, xticklabels at=edge bottom},
width=8cm, xmin=0, xmax=5,
]
\nextgroupplot[height=5cm, ylabel={Signal}]
\addplot+[only marks] coordinates {(1,2.1) (2,3.9) (3,6.2) (4,7.8)};
\addplot[red, domain=0:5] {2*x};
\nextgroupplot[height=3cm, xlabel=$x$, ylabel={Residual}, ymin=-0.5, ymax=0.5]
\addplot+[only marks] coordinates {(1,0.1) (2,-0.1) (3,0.2) (4,-0.2)};
\addplot[gray, dashed, domain=0:5] {0};
\end{groupplot}
\end{tikzpicture}
\end{document}group style 키
| 키 | 하는 일 | Scissor LaTeX에서 |
|---|---|---|
group size=C by R | 열 수 × 행 수 | 작동함 |
horizontal sep, vertical sep | 축 테두리 사이의 간격 | 작동함 |
xlabels at=edge bottom, ylabels at=edge left | 바깥쪽 그래프에만 축 레이블(또는 all) | 작동함 |
xticklabels at=edge bottom, yticklabels at=edge left | 바깥쪽 그래프에만 눈금 레이블(또는 all) | 작동함 |
group name=g | g c1r1처럼 칸을 가리킬 이름 | 받아들이지만 칸 참조는 지원하지 않음 |
TeX 설치 환경과 다른 점
이 라이브러리는 pgfplots의 일부입니다. CTAN 설명서의 "groupplots" 절을 보세요: ctan.org/pkg/pgfplots. pgfplots가 처음이라면 pgfplots 그래프부터 시작하세요.
선 그래프, 로그 축, pgfplots도 함께 보세요.
질문과 답변
LaTeX에서 서브플롯은 어떻게 만드나요?
pgfplots의 groupplots 라이브러리를 쓰세요. \usepgfplotslibrary{groupplots}를 넣고 \begin{groupplot}[group style={group size=2 by 2}]를 연 다음, 그래프마다 \nextgroupplot을 하나씩 씁니다.
그룹 그래프에서 축 레이블을 공유하려면 어떻게 하나요?
group style에 xlabels at=edge bottom과 ylabels at=edge left를 넣고, groupplot에 xlabel과 ylabel을 지정하세요.
두 그래프가 범례 하나를 공유할 수 있나요?
칸마다 범례가 따로 있습니다. 한 칸에 범례를 넣고 legend style={at={(x,y)}, anchor=...}로 위치를 정하세요.
이 페이지의 모든 예제는 사이트를 빌드할 때 Scissor LaTeX로 조판됩니다. 마지막 업데이트: 2026-11-07