
Я почти удовлетворен своими графиками, не хватает только линий сетки. По сути, я делаю что-то вроде графика плотности/цветового графика, позволяя 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);