등고선, 히트맵, 컬러맵
view={0}{90}인 축에서 \addplot3를 쓰세요. 히트맵에는 surf나 matrix plot, 채운 등고선에는 contour filled를 쓰고, 축척을 위해 colorbar와 colormap을 넣습니다.
함수의 히트맵
\addplot3는 x와 y의 함수를 그립니다. 위에서 내려다보면(view={0}{90}) surf 그래프는 히트맵이 됩니다. 각 칸은 값에 따라 컬러맵의 색을 받습니다. shader=interp는 색을 부드럽게 섞고, shader=flat은 칸마다 한 가지 색을 씁니다.
컬러바가 있는 부드러운 히트맵
\begin{tikzpicture}
\begin{axis}[view={0}{90}, colorbar, colormap/viridis,
xlabel=$x$, ylabel=$y$, enlargelimits=false]
\addplot3[surf, shader=interp, domain=-2:2, y domain=-2:2, samples=30]
{exp(-x^2 - y^2) * (1 + x)};
\end{axis}
\end{tikzpicture}domain은 x의 범위를, y domain은 y의 범위를, samples는 격자 크기(기본값 25, y 방향을 다르게 하려면 samples y)를 정합니다.
채운 등고선
contour filled는 값을 여러 띠로 나눕니다. number=는 등고선 수준의 개수를 정하고, levels={...}로는 수준을 직접 나열합니다.
봉우리가 둘인 함수의 채운 등고선
\begin{tikzpicture}
\begin{axis}[view={0}{90}, colorbar, colormap/hot, enlargelimits=false]
\addplot3[contour filled={number=8}, domain=-3:3, y domain=-3:3, samples=40]
{exp(-(x-1)^2 - y^2) + 0.7*exp(-(x+1.2)^2 - (y-1)^2)};
\end{axis}
\end{tikzpicture}표로 만든 히트맵: matrix plot
격자 위에서 측정한 데이터에는 matrix plot*가 표의 행마다 칸 하나를 그립니다. mesh/cols는 격자의 열 수를 알려 주고, point meta=explicit과 meta=는 값이 담긴 열을 지정합니다.
3×3 격자의 값
\begin{tikzpicture}
\begin{axis}[colorbar, colormap/bluered, enlargelimits=false,
xtick=data, ytick=data, width=6.5cm, height=6cm]
\addplot[matrix plot*, mesh/cols=3, point meta=explicit]
table[meta=v] {
x y v
0 0 1
1 0 4
2 0 2
0 1 3
1 1 9
2 1 5
0 2 2
1 2 6
2 2 44
};
\end{axis}
\end{tikzpicture}등고선
채우지 않은 선만 그리려면 등고선 수준을 계산해 주는 기능이 필요합니다. pgfplots에서는 contour gnuplot이나 contour lua가 그 역할을 하며, TeX 설치 환경에서는 별도 프로그램이나 LuaLaTeX가 필요합니다. Scissor LaTeX는 선을 직접 계산해 그리고, 이 코드가 다른 곳에서는 컴파일되지 않을 수 있다고 문제 탭에서 알려 줍니다.
contour gnuplot으로 그린 등고선
\begin{tikzpicture}
\begin{axis}[view={0}{90}, xlabel=$x$, ylabel=$y$]
\addplot3[contour gnuplot={levels={0.2, 0.5, 0.8}},
domain=-2:2, y domain=-2:2, samples=30]
{exp(-x^2 - y^2)};
\end{axis}
\end{tikzpicture}문제 탭: contour gnuplot needs gnuplot and shell escape in LaTeX; contour filled or contour prepared compile everywhere
어디서나 컴파일되는 파일을 원하면 contour filled를 쓰거나, 미리 계산한 등고선 데이터와 함께 contour prepared를 쓰세요.
컬러맵과 컬러바
| 옵션 | 하는 일 | Scissor LaTeX에서 |
|---|---|---|
colormap/viridis, /hot, /cool, /jet, /blackwhite, /bluered | 내장 컬러맵 | 작동함 |
colormap name=viridis | 이름으로 컬러맵 선택 | 작동함 |
colormap={name}{rgb255=(..) rgb255=(..)} | 직접 만든 컬러맵 | 작동함 |
colorbar, colorbar horizontal | 그래프 옆이나 아래의 축척 | 작동함 |
colorbar style={..} | 컬러바의 눈금과 레이블 | 작동함 |
point meta min, point meta max | 색 범위 고정 | 작동함 |
shader=flat, shader=interp, shader=faceted | 칸에 색을 입히는 방식 | 작동함 |
직접 만든 컬러맵과 가로 컬러바
\begin{tikzpicture}
\begin{axis}[view={0}{90}, enlargelimits=false,
colormap={sea}{rgb255=(255,255,255) rgb255=(120,180,220) rgb255=(10,40,100)},
colorbar horizontal, width=7cm, height=6cm]
\addplot3[surf, shader=flat, domain=0:2, y domain=0:2, samples=12] {x*y};
\end{axis}
\end{tikzpicture}3D 보기
Scissor LaTeX는 \addplot3를 바로 위에서 내려다본 모습으로만 그립니다. 기본 3D 보기를 포함해 다른 view를 쓰면 축이 빈 채로 남고 메시지가 나옵니다.
3D 보기는 그려지지 않음
\begin{tikzpicture}
\begin{axis}[width=6cm, height=5cm]
\addplot3[surf, domain=-2:2, y domain=-2:2] {x^2 - y^2};
\end{axis}
\end{tikzpicture}문제 탭: 3D plots are drawn only when seen from above (view={0}{90}) for now
TeX 설치 환경과 다른 점
pgfplots 설명서에 \addplot3, 컬러맵, 등고선이 자세히 나와 있습니다: ctan.org/pkg/pgfplots.
pgfplots 기초, 로그 축, pgfplots도 함께 보세요.
질문과 답변
LaTeX에서 히트맵은 어떻게 만드나요?
view={0}{90}인 축에서 \addplot3[surf, shader=interp] {f(x,y)};(표 데이터라면 matrix plot*)를 쓰고 colorbar를 넣으세요.
Scissor LaTeX는 3D 곡면 그래프를 그리나요?
아직은 아닙니다. \addplot3는 위에서 내려다본 경우(view={0}{90})에만 그려지며, 다른 보기에서는 축이 빈 채로 남고 문제 탭에 그렇게 표시됩니다.
contour gnuplot을 쓰면 왜 경고가 나오나요?
TeX 설치 환경에서는 gnuplot과 shell escape가 필요하기 때문입니다. Scissor LaTeX는 그래도 등고선을 그리지만, 이 코드가 다른 곳에서는 컴파일되지 않을 수 있다고 경고합니다. contour filled는 어디서나 컴파일됩니다.
이 페이지의 모든 예제는 사이트를 빌드할 때 Scissor LaTeX로 조판됩니다. 마지막 업데이트: 2026-11-07