在 PGFplots 中构建等值/水平面颜色图

在 PGFplots 中构建等值/水平面颜色图

我正在尝试构建一个 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}

结果是

相关内容