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,
%y domain = 0:x, %does not work
opacity=0.5,
]
{12*exp(-(4*x+3*y))};

%highlighting dark part of bottom
\filldraw[Tan, fill = Tan, opacity = 0, fill opacity = 0.5] (0,0,0) -- (1.5,1.5,0) -- (1.5,0,0) -- (0,0,0);

%line across bottom
\draw[RawSienna, thick, opacity = 0.75] (0,0,0) -- (1.5,1.5,0);

%line going across graph
\addplot3 [domain=0:1.5, RawSienna, thick, samples=30, samples y=0, opacity = 0.75] (x,x,{12*exp(-(7*x))});

\end{axis}
\end{tikzpicture}

\end{document}

을 사용하려고 했지만 y domain = 0:x컴파일조차 되지 않습니다(너무 오래 걸리고 오류가 발생함). 어떤 제안이 있으십니까?

답변1

이 같은? (이 버전 대신 아주 오래된 버전을 원한다면 \pgfplotsset{compat=1.16}약간 수정해야 합니다. 즉, 좌표 \clip앞에 , 를 추가해야 합니다 axis cs:. \clip plot[variable=\x,domain=0:1.5] (axis cs:\x,\x,{f(\x,\x)}) -- (axis cs:1.5,0,{f(1.5,1.5)}) -- (axis cs:0,0,{f(1.5,1.5)}) -- (axis cs:0,0,{f(0,0)});)

\PassOptionsToPackage{usenames,dvipsnames,table,x11names}{xcolor}
\documentclass[a4paper, 12pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{colormaps,fillbetween}

\begin{document}

\begin{tikzpicture}[declare function={f(\x,\y)=12*exp(-(4*\x+3*\y));}]

\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,
]

\begin{scope}
 \clip plot[variable=\x,domain=0:1.5] (\x,\x,{f(\x,\x)})
 -- (1.5,0,{f(1.5,1.5)}) -- (0,0,{f(1.5,1.5)}) -- (0,0,{f(0,0)});
 \addplot3[
 surf,
 samples=30,
 domain=0:1.5,
 %y domain = 0:x, %does not work
 opacity=0.5,
 ] {f(x,y)};
\end{scope}

%highlighting dark part of bottom
\filldraw[Tan, fill = Tan, opacity = 0, fill opacity = 0.5] (0,0,0) -- (1.5,1.5,0) -- (1.5,0,0) -- (0,0,0);


%line across bottom
\draw[RawSienna, thick, opacity = 0.75] (0,0,0) -- (1.5,1.5,0);

line going across graph
\addplot3 [domain=0:1.5, RawSienna, thick, samples=30, samples y=0, opacity = 0.75] 
(x,x,{f(x,x)});

\end{axis}
\end{tikzpicture}

\end{document}

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

관련 정보