顶视图表面图中的网格线

顶视图表面图中的网格线

我几乎对我的图表感到满意,只是缺少网格线。我基本上做的是让 pgfplots 生成一个表面并从顶部查看它,从而绘制一种密度图/颜色图:

\begin{tikzpicture}
    \begin{axis}[
            axis lines = middle,
            grid = major,
            grid style = {color = white!90!black},
            xlabel = $x$,
            ylabel = $y$,
            no markers,
            mesh/ordering=y varies,
            view={0}{90},
            colormap = {graywhite}{color=(white) color=(gray)},
        ]
        \addplot3[surf,shader=interp] file{surf.txt};
    \end{axis}
\end{tikzpicture}

示例输出,使用输入:

输出

表面是使用细网格(50x50)绘制的,因此保留原始网格线是行不通的。选择shader=interppgfplots 基本上可以删除网格线并很好地插入颜色。如果可以在此基础上绘制一些网格线,例如使用不透明度为 10% 的黑色,那就太棒了。有人知道如何做到这一点吗?

答案1

看起来,当您这样做时:colormap = {graywhite}{color=(white) color=(gray)}它会用白色填充整个绘图区域。因此网格线隐藏在您的绘图后面。

要按照您的要求将它们绘制在顶部,您可以使用:

\begin{tikzpicture}
\begin{axis}[
        axis lines = middle,
        grid = major,
        grid style = {color = white!90!black},
        xlabel = $x$,
        ylabel = $y$,
        no markers,
        mesh/ordering=y varies,
        view={0}{90},
        colormap = {graywhite}{color=(white) color=(gray)},
    ]
    \addplot3[surf,shader=interp] file{surf.txt};
    \draw[dotted,step={(axis cs:5,5)},help lines] (0,0) grid (axis cs:30,20);
\end{axis}
\end{tikzpicture}

其结果为: 结果

要绘制不透明度为 10% 的黑线,可以使用: \draw[opacity=0.1,step={(axis cs:5,5)}] (0,0) grid (axis cs:30,20);

相关内容