Перейти к содержанию

Контурные графики, тепловые карты и цветовые карты

Используйте \addplot3 в оси с view={0}{90}: surf или matrix plot для тепловой карты, contour filled для закрашенных контуров, а для шкалы добавьте colorbar и colormap.

Тепловая карта функции

\addplot3 строит функцию от x и y. При взгляде сверху (view={0}{90}) график surf становится тепловой картой: каждая ячейка окрашена по своему значению через цветовую карту. shader=interp плавно смешивает цвета; shader=flat даёт один цвет на ячейку.

Плавная тепловая карта с цветовой шкалой

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\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}
Свёрстано в Scissor LaTeX: Плавная тепловая карта с цветовой шкалой

domain задаёт диапазон x, y domain диапазон y, а samples размер сетки (по умолчанию 25; samples y для другого числа точек по y).

Закрашенные контуры

contour filled делит значения на полосы. number= задаёт число уровней; levels={...} позволяет перечислить их самостоятельно.

Закрашенные контуры функции с двумя пиками

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\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}
Свёрстано в Scissor LaTeX: Закрашенные контуры функции с двумя пиками

Тепловая карта из таблицы: matrix plot

Для измеренных данных на сетке matrix plot* рисует по одной ячейке на строку таблицы. mesh/cols говорит, сколько столбцов у сетки, а point meta=explicit вместе с meta= называет столбец значений.

Сетка значений 3 на 3

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\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

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\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как окрашиваются ячейкиРаботает

Собственная цветовая карта и горизонтальная шкала

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\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}
Свёрстано в Scissor LaTeX: Собственная цветовая карта и горизонтальная шкала

Трёхмерные виды

Scissor LaTeX рисует \addplot3 только при взгляде строго сверху. Любой другой view, включая трёхмерный вид по умолчанию, оставляет ось пустой и выводит сообщение.

Трёхмерный вид не рисуется

LaTeXПреамбула: \usepackage{pgfplots}Открыть в редакторе (откроется в новой вкладке)
\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?

Используйте \addplot3[surf, shader=interp] {f(x,y)}; (или matrix plot* для данных из таблицы) в оси с view={0}{90} и добавьте colorbar.

Рисует ли Scissor LaTeX трёхмерные поверхности?

Пока нет. \addplot3 рисуется только при взгляде сверху (view={0}{90}); другие виды оставляют ось пустой, и вкладка «Проблемы» об этом сообщает.

Почему contour gnuplot выдаёт предупреждение?

В установленном TeX ему нужны gnuplot и shell escape. Scissor LaTeX всё равно рисует контуры, но предупреждает, что код может не скомпилироваться в другом месте. contour filled компилируется везде.

Каждый пример на этой странице верстается в Scissor LaTeX при сборке сайта. Обновлено 2026-11-07.