我正在尝试构建一个 3D 曲面图,其中曲面的颜色取决于坐标z
。困难的部分是我需要颜色“离散”变化,而不是连续变化。如果我没记错的话,我相信他们称这些图为等高面或水平面。
例子:
对于随坐标连续变化的颜色z
,构造PGFplots
很容易。\addplot3[surf,shader=faceted interp] ...
这很好用。
最小工作示例是
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot3
[
surf,
domain=-1:1,
y domain=-1:1,
samples=50, % DECREASE FOR SHORTER COMPILATION.
shader=faceted interp,
colormap name={hot}
] {exp(-10*(x^2+y^2))};
\end{axis}
\end{tikzpicture}
\end{document}
结果是。我应该如何修改这个 LaTeX 代码来获得像前两张图片那样的离散颜色变化?
答案1
遵照Jake的建议,定义一个“离散”色彩图,就可以构建所需的等高/水平表面。
有问题的代码,
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset
{
colormap={redgreenblue}%
{
[2pt] % colormap steps: 2pt
% blue: from 0000 to 1000
rgb(0000pt)=(0,0,1);
rgb(1000pt)=(0,0,1);
% green: from 1000 to 2000
rgb(1000pt)=(0,1,0);
rgb(2000pt)=(0,1,0);
% red: from 2000 to 3000
rgb(2000pt)=(1,0,0);
rgb(3000pt)=(1,0,0);
}
}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot3
[
surf,
domain=-1:1,
y domain=-1:1,
samples=50, % DECREASE FOR SHORTER COMPILATION.
shader=faceted interp,
%colormap name={hot}
] {exp(-10*(x^2+y^2))};
\end{axis}
\end{tikzpicture}
\end{document}
结果是