본문으로 건너뛰기

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=gg 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