我几乎对我的图表感到满意,只是缺少网格线。我基本上做的是让 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=interp
pgfplots 基本上可以删除网格线并很好地插入颜色。如果可以在此基础上绘制一些网格线,例如使用不透明度为 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);