Chuyển đến nội dung

Đường đồng mức, bản đồ nhiệt và bảng màu

Dùng \addplot3 trong một trục với view={0}{90}: surf hoặc matrix plot cho bản đồ nhiệt, contour filled cho đường đồng mức tô màu, và thêm colorbar cùng một colormap để có thang màu.

Bản đồ nhiệt của một hàm số

\addplot3 vẽ một hàm theo x và y. Khi nhìn từ trên xuống (view={0}{90}), một đồ thị surf trở thành bản đồ nhiệt: mỗi ô được tô màu theo giá trị của nó thông qua bảng màu. shader=interp hòa trộn màu một cách mượt mà; shader=flat cho mỗi ô một màu.

Bản đồ nhiệt mượt với thanh màu

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}
Dàn trang bởi Scissor LaTeX: Bản đồ nhiệt mượt với thanh màu

domain đặt khoảng của x, y domain đặt khoảng của y, và samples đặt kích thước lưới (mặc định 25, samples y cho một số lượng khác theo y).

Đường đồng mức tô màu

contour filled chia các giá trị thành từng dải. number= đặt số mức đồng mức; levels={...} để bạn tự liệt kê các mức.

Đường đồng mức tô màu của một hàm hai đỉnh

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}
Dàn trang bởi Scissor LaTeX: Đường đồng mức tô màu của một hàm hai đỉnh

Bản đồ nhiệt từ bảng: matrix plot

Với dữ liệu đo trên một lưới, matrix plot* vẽ một ô cho mỗi hàng của bảng. mesh/cols cho biết lưới có bao nhiêu cột, và point meta=explicit cùng với meta= chỉ ra cột giá trị.

Một lưới giá trị 3 x 3

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}

Đường đồng mức

Đường không tô màu cần các mức đồng mức được tính sẵn cho bạn. Trong pgfplots đó là contour gnuplot hoặc contour lua, vốn cần thêm chương trình ngoài hoặc LuaLaTeX trong một bản cài đặt TeX. Scissor LaTeX tự tính và vẽ các đường, đồng thời nhắc bạn trong thẻ Sự cố rằng mã này có thể không biên dịch được ở nơi khác.

Đường đồng mức với contour gnuplot

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}

Thẻ Sự cố: contour gnuplot needs gnuplot and shell escape in LaTeX; contour filled or contour prepared compile everywhere

Để có một tệp biên dịch được ở mọi nơi, hãy dùng contour filled, hoặc contour prepared với dữ liệu đồng mức đã tính trước.

Bảng màu và thanh màu

Tùy chọnTác dụngTrong Scissor LaTeX
colormap/viridis, /hot, /cool, /jet, /blackwhite, /blueredcác bảng màu có sẵnHoạt động
colormap name=viridischọn bảng màu theo tênHoạt động
colormap={name}{rgb255=(..) rgb255=(..)}bảng màu của riêng bạnHoạt động
colorbar, colorbar horizontalmột thang màu bên cạnh hoặc bên dưới đồ thịHoạt động
colorbar style={..}vạch chia và nhãn của thanh màuHoạt động
point meta min, point meta maxcố định khoảng màuHoạt động
shader=flat, shader=interp, shader=facetedcách tô màu các ôHoạt động

Một bảng màu tự tạo và thanh màu nằm ngang

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}
Dàn trang bởi Scissor LaTeX: Một bảng màu tự tạo và thanh màu nằm ngang

Góc nhìn 3D

Scissor LaTeX chỉ vẽ \addplot3 khi nhìn thẳng từ trên xuống. Mọi view khác, kể cả góc nhìn 3D mặc định, để trục trống và hiển thị một thông báo.

Góc nhìn 3D không được vẽ

LaTeXPhần mở đầu: \usepackage{pgfplots}Mở trong trình soạn (mở trong thẻ mới)
\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}

Thẻ Sự cố: 3D plots are drawn only when seen from above (view={0}{90}) for now

Khác biệt so với một bản cài đặt TeX

Tài liệu hướng dẫn pgfplots trình bày chi tiết \addplot3, bảng màu và đường đồng mức: ctan.org/pkg/pgfplots.

Xem thêm pgfplots cơ bản, Trục logarit và pgfplots.

Hỏi và đáp

Làm thế nào để vẽ bản đồ nhiệt trong LaTeX?

Dùng \addplot3[surf, shader=interp] {f(x,y)}; (hoặc matrix plot* cho dữ liệu dạng bảng) trong một trục với view={0}{90}, và thêm colorbar.

Scissor LaTeX có vẽ đồ thị bề mặt 3D không?

Chưa. \addplot3 chỉ được vẽ khi nhìn từ trên xuống (view={0}{90}); các góc nhìn khác để trục trống và thẻ Sự cố sẽ báo điều đó.

Vì sao contour gnuplot hiện cảnh báo?

Trong một bản cài đặt TeX, nó cần gnuplot và shell escape. Scissor LaTeX vẫn vẽ các đường đồng mức, nhưng cảnh báo rằng mã có thể không biên dịch được ở nơi khác. contour filled biên dịch được ở mọi nơi.

Mọi ví dụ trên trang này đều được Scissor LaTeX dàn trang khi xây dựng trang web. Cập nhật lần cuối 2026-11-07.