3D 플롯에 실선 그리기

3D 플롯에 실선 그리기

통합 영역을 나타내기 위해 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}

내가 시도 1과 시도 2라고 부르는 끝 부분에 주석 처리된 두 줄은 이를 수행하려는 나의 두 가지 시도입니다. 각각에 대한 결과는 다음과 같습니다.

시도 1

여기에 이미지 설명을 입력하세요

시도 2

여기에 이미지 설명을 입력하세요

시도 1은 엉망이지만, 시도 2는 내가 원하는 것과 매우 가깝지만 함수의 시작점과 끝점을 가로질러 선을 그립니다. 이 문제를 어떻게 해결할 수 있는지 제안해 주실 수 있나요?

답변1

당신은 이미 올바른 길을 가고 있었습니다. samples y=1두 번째 시도에 추가하면 원하는 것을 얻을 수 있습니다 .

(그 외에도 코드를 약간 최적화했습니다. 자세한 내용은 코드의 주석을 참조하세요.)

% 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}

위 코드의 결과를 보여주는 이미지

관련 정보