Я хочу отобразить поверхность с тремя точками, расположенными на ней. Я попытался объединить два поста, с частичным успехом. Если я изменю точку обзора, я получу верхнюю фигуру. В этом случае логарифмическое масштабирование исчезает, но оно близко к тому, что я хотел (за исключением шаров в точках сетки). Если я не изменю точку обзора, я получу нижнюю фигуру, где логарифмическое масштабирование идеально, но интересный участок поверхности и точки не видны. Как я могу изменить точку обзора, сохранив логарифмическое масштабирование?
Кстати: как лучше всего подчеркнуть, как 3D-позиции этих точек соотносятся друг с другом? Может быть, какие-то дополнительные линии сетки на поверхности? Или какие-то спроецированные линии на соответствующие координаты?
\documentclass[border= 5mm]{standalone}
\usepackage{pgfplots}
%https://tex.stackexchange.com/questions/232070/3d-surface-plot-with-logarithmic-x-and-y-axis
%http://pgfplots.net/tikz/examples/mesh-plot/
\begin{document}
\begin{tikzpicture}
\begin{axis}
[view={105}{18}] %% Comment this out
[
scale = 1,
ymin = 1e5, xmax = 1.1e7,
ymin = 1e-8, ymax = 1e-5,
zmin = 0, zmax = 1,
ztick={.2,.5,.8,1.0},
ytick={1e-7,1e-6,1e-5},
colormap/jet,
xmode=log, ymode=log
]
\addplot3+[
mesh,%scatter,%,samples=10
% surf,
samples=10,
domain=5:7.1,
domain y=-8:-5,
]
(10^x, 10^y, { 1/(10^x*10^y+(1-10^y))});
\addlegendentry{Surface}
\addplot3+[only marks] coordinates {
(2397824, 1.665e-7, 0.715) };
\addlegendentry{A}
\addplot3+[only marks] coordinates {
(1572480, 2.09e-7, 0.753) };
\addlegendentry{B}
\addplot3+[only marks] coordinates {
(10649600,33e-9,.742) };
\addlegendentry{C}
\end{axis}
\end{tikzpicture}
\end{document}
решение1
Я с радостью это уберу. Вы закрыли ]
параметры осей, поэтому все логарифмические штуки были проигнорированы. Просто замените ][
запятой, чтобы получить
\documentclass[border= 5mm]{standalone}
\usepackage{pgfplots}
%https://tex.stackexchange.com/questions/232070/3d-surface-plot-with-logarithmic-x-and-y-axis
%http://pgfplots.net/tikz/examples/mesh-plot/
\begin{document}
\begin{tikzpicture}
\begin{axis}
[view={105}{18}, %% Comment this out
scale = 1,
ymin = 1e5, xmax = 1.1e7,
ymin = 1e-8, ymax = 1e-5,
zmin = 0, zmax = 1,
ztick={.2,.5,.8,1.0},
ytick={1e-7,1e-6,1e-5},
colormap/jet,
xmode=log, ymode=log
]
\addplot3+[
mesh,%scatter,%,samples=10
% surf,
samples=10,
domain=5:7.1,
domain y=-8:-5,
]
(10^x, 10^y, { 1/(10^x*10^y+(1-10^y))});
\addlegendentry{Surface}
\addplot3+[only marks] coordinates {
(2397824, 1.665e-7, 0.715) };
\addlegendentry{A}
\addplot3+[only marks] coordinates {
(1572480, 2.09e-7, 0.753) };
\addlegendentry{B}
\addplot3+[only marks] coordinates {
(10649600,33e-9,.742) };
\addlegendentry{C}
\end{axis}
\end{tikzpicture}
\end{document}
Что касается вопроса, как лучше всего обозначить местоположение, я не знаю, но мне кажется, что добавление тонких линий, соединяющих линии с дном, и рисование поверхности в последнюю очередь может помочь.
\documentclass[border= 5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
%https://tex.stackexchange.com/questions/232070/3d-surface-plot-with-logarithmic-x-and-y-axis
%http://pgfplots.net/tikz/examples/mesh-plot/
\begin{document}
\begin{tikzpicture}
\begin{axis}
[view={105}{18}, %% Comment this out
scale = 1,
ymin = 1e5, xmax = 1.1e7,
ymin = 1e-8, ymax = 1e-5,
zmin = 0, zmax = 1,
ztick={.2,.5,.8,1.0},
ytick={1e-7,1e-6,1e-5},
colormap/jet,
xmode=log, ymode=log
]
\addplot3+[only marks] coordinates {
(2397824, 1.665e-7, 0.715) };
\draw[thin,gray] (2397824, 1.665e-7, 0.715) -- (2397824, 1.665e-7, 0);
\addlegendentry{A}
\addplot3+[only marks] coordinates {
(1572480, 2.09e-7, 0.753) };
\draw[thin,gray] (1572480, 2.09e-7, 0.753) -- (1572480, 2.09e-7, 0) ;
\addlegendentry{B}
\addplot3+[only marks] coordinates {
(10649600,33e-9,.742) };
\draw[thin,gray] (10649600,33e-9,.742) -- (10649600,33e-9,0);
\addlegendentry{C}
\addplot3+[
mesh,%scatter,%,samples=10
% surf,
samples=10,
domain=5:7.1,
domain y=-8:-5,
]
(10^x, 10^y, { 1/(10^x*10^y+(1-10^y))});
\addlegendentry{Surface}
\end{axis}
\end{tikzpicture}
\end{document}