pgfplots:填充三维表面下的体积

pgfplots:填充三维表面下的体积

我有一个非常简单的 3d 图。

\begin{tikzpicture}

\begin{axis}[view={60}{20},
%axis equal image=true,
xlabel=$X(T)$, ylabel={$D(T)$}, zlabel={$V(T)$},
zmin=0
]
\addplot3[surf,shader=flat,z buffer=sort,
samples=30,domain=0:100,y domain=0:100]
{x+y}; 
\end{axis}
\end{tikzpicture}

此代码绘制了一个表面。我希望看到的是表面下方的体积被着色。此外,我想以某种方式将填充的体积标记为“默认”。我翻遍了手册的所有页面,但找不到任何解决方案。有人知道怎么做吗?

非常感谢。

答案1

不幸的是,我在整理了他所推荐的内容后才阅读了 Christian Feuersänger 的评论;所以您可以这样做,但您需要手动指定边缘处的点,这对于曲面来说会非常复杂:

代码

\documentclass[tikz,border=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}

\begin{document}

\begin{tikzpicture}
\begin{axis}[view={60}{20},
%axis equal image=true,
xlabel=$X(T)$, ylabel={$D(T)$}, zlabel={$V(T)$},
zmin=0
]
\fill[opacity=0.5,red] (axis cs: 0,0,0) -- (axis cs: 100,0,100) -- (axis cs: 100,0,0) -- cycle;
\fill[opacity=0.5,yellow] (axis cs: 0,0,0) -- (axis cs: 0,100,100) -- (axis cs: 0,100,0) -- cycle;
\fill[opacity=0.5,green] (axis cs: 100,0,100) -- (axis cs: 100,100,200) -- (axis cs: 100,100,0) -- (axis cs: 100,0,0) -- cycle;
\fill[opacity=0.5,blue] (axis cs: 0,100,100) -- (axis cs: 100,100,200) -- (axis cs: 100,100,0) -- (axis cs: 0,100,0) -- cycle;
\addplot3[surf,shader=flat,z buffer=sort,samples=30,domain=0:100,y domain=0:100]{x+y}; 
\end{axis}
\end{tikzpicture}

\end{document}

输出

在此处输入图片描述


编辑1:您还可以伪造颜色渐变(在这个简单的例子中):

代码

\documentclass[tikz,border=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}

\begin{document}

\begin{tikzpicture}
\begin{axis}
[   view={60}{20},
    xlabel=$X(T)$,
    ylabel={$D(T)$},
    zlabel={$V(T)$},
    zmin=0,
]
\fill[opacity=1,left color=blue, right color=yellow] (axis cs: 0,0,0) -- (axis cs: 100,0,100) -- (axis cs: 100,0,0) -- cycle;
\fill[opacity=1,bottom color=yellow, top color=red] (axis cs: 100,0,100) -- (axis cs: 100,100,200) -- (axis cs: 100,100,0) -- (axis cs: 100,0,0) -- cycle;
\addplot3[surf,shader=flat,z buffer=sort,samples=30,domain=0:100,y domain=0:100]{x+y}; 
\end{axis}
\end{tikzpicture}

\end{document}

输出

在此处输入图片描述

相关内容