積分領域を表すために、3D グラフに沿って移動する線を描画しようとしています。
この場合、下部の黒い線は積分領域のカットオフを表します。関数の表面に沿って移動する線のトレースを取得したいと思います。MWE は次のとおりです。
\PassOptionsToPackage{usenames,dvipsnames,table,x11names}{xcolor}
\documentclass[a4paper, 12pt]{article}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps,fillbetween}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
zmax=15,
zmin=0,
view = {45}{45},
grid=minor,
colormap={mycol}{color=(Tan), color=(Tan)},
xlabel = $s$,
ylabel = $h$,
zlabel = {$f(s,h)$},
ticks = none,
]
\addplot3[
surf,
samples=30,
domain=0:1.5,
opacity=0.5,
]
{12*exp(-(4*x+3*y))};
\draw[black, thick] (0,0,0) -- (1.5,1.5,0);
\addplot3 [name path = xline, draw = none, domain=0:1.5] (x,0,0);
\addplot3 [name path = xcurve, domain=0:1.5, y domain = 0:0, draw = none]
(x, 0, {12*exp(-(4*x))});
\addplot [color = Tan, opacity = 0.5, draw = none]
fill between[of = xcurve and xline];
\addplot3[
mesh,
draw=Bittersweet,
samples=30,
domain=0:1.5,
opacity = 0.75
]
{12*exp(-(4*x+3*y))};
% Attempt 1
%\addplot3 [domain=0:1.5, black, thick, samples=30] (x,x,{12*exp(-(4*x+3*y))});
%Attempt 2
%\addplot3 [domain=0:1.5, black, thick, samples=30] (x,x,{12*exp(-(7*x))});
\end{axis}
\end{tikzpicture}
最後のほうのコメントアウトされた 2 行 (試行 1 と試行 2 と呼んでいます) は、つまり、これを実行するための 2 つの試みです。それぞれの結果は次のとおりです。
試行 1
試行2
試行 1 はめちゃくちゃですが、試行 2 は希望に非常に近いですが、関数の開始点と終了点に線が引かれています。これを修正する方法について何か提案はありますか?
答え1
samples y=1
あなたはすでに正しい道を歩んでいました。2回目の試みにさらに力を入れることで、望みの成果を達成できます。
(それに加えて、コードにいくつかの小さな最適化を加えました。詳細については、コード内のコメントを参照してください。)
% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage[dvipsnames]{xcolor}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfplotsset{
compat=1.16,
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
zmax=15,
zmin=0,
view={45}{45},
grid=minor,
colormap={mycol}{color=(Tan), color=(Tan)},
xlabel=$s$,
ylabel=$h$,
zlabel={$f(s,h)$},
ticks=none,
% (moved common options here)
domain=0:1.5,
samples=30,
]
\addplot3[
surf,
opacity=0.5,
% removed one `\addplot' by adding the next line
faceted color=Bittersweet,
] {12*exp(-(4*x+3*y))};
\draw [black, thick] (0,0,0) -- (1.5,1.5,0);
\addplot3 [
name path=xline,
draw=none,
] (x,0,0);
\addplot3 [
name path=xcurve,
% replaced this ...
% y domain=0:0,
% by ...
samples y=1,
draw=none,
] (x,0,{12*exp(-(4*x))});
\addplot [color=Tan, opacity=0.5]
fill between [of=xcurve and xline];
% Attempt 2
\addplot3 [
black,
thick,
samples y=1, % <-- added
] (x,x,{12*exp(-7*x)});
\end{axis}
\end{tikzpicture}
\end{document}