
Estou quase satisfeito com meus gráficos, faltando apenas linhas de grade. O que estou basicamente fazendo é uma espécie de gráfico de densidade/gráfico de cores, permitindo que o pgfplots gere uma superfície e visualize-a de cima:
\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}
Saída de exemplo, usandoesseentrada:
A superfície é desenhada usando uma grade fina (50x50), portanto, deixar as linhas de malha originais é impossível. Ao escolher shader=interp
pgfplots basicamente remove as linhas da malha e interpola bem as cores. Seria fantástico se algumas linhas de grade pudessem ser desenhadas em cima disso, usando, por exemplo, preto com 10% de opacidade. Alguém sabe fazer isso?
Responder1
Parece que quando você está fazendo: colormap = {graywhite}{color=(white) color=(gray)}
preenche toda a área de plotagem com branco. Portanto, as linhas da grade ficam escondidas atrás do seu gráfico.
Para plotá-los no topo conforme solicitado, você pode usar:
\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}
O que produz:
Para plotar linhas pretas com 10% de opacidade você pode usar:
\draw[opacity=0.1,step={(axis cs:5,5)}] (0,0) grid (axis cs:30,20);