是否可以在 3D 图中写入文本?(以及有关 3D 图形的新手问题)

是否可以在 3D 图中写入文本?(以及有关 3D 图形的新手问题)

我正在用 LaTeX 制作 3D 图形。到目前为止,我得到的是这张图片

输出

在背景中,我们可以感觉到一个小的D_g;蓝色域应该用它表示。红色表面应该只是存在于蓝色域上的一个函数,所以我正在寻找的是,就像在 2D 情况下一样,是否可以在蓝色表面上书写。

如果不是这种情况,是否有一种简单的方法可以用经典的 TikZ 方式重建这样的图形?除了蓝色域之外,这里重要的是红色表面在某些边界附近必须陡峭。

如何确定最佳视角?只能通过反复试验和经验来决定吗?

再说一遍:我只需要对图像中的情况进行定性描述。甚至,轴并不重要。我很感激任何评论。

编辑:另外一个问题:优化 3D 彩色图形以实现黑白输出的最佳方法是什么?


代码

\documentclass{minimal}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={60}{45}]
  \addplot3[surf, samples=30,domain=0:1, y domain=0:1,opacity=1,
  color=blue]
(x,{y*((1/4)*cos(deg(2*pi*x))+1-x/2)},0);

  \node (A) at (0,1,1) [above] {$D_g$};
    \addplot3[surf, domain=0:1, y domain=0:1,color=red,opacity=0.5]
  (x,{y*((1/4)*cos(deg(2*pi*x))+1-x/2)},{(1+sqrt(y)-sqrt(1-y))});
 \end{axis}
\end{tikzpicture}
\end{document}

答案1

我无法从您的问题中判断您是否需要自动放置这些标签。此外,下面的代码纠正了第二条\addplot3命令的 z 坐标规范的两个小问题,这些问题阻止了您的 MWE 编译:缺少左括号和错误>字符。

axis cs如果可以接受手动定位,则可以使用坐标系说明符将节点放置在轴上的任意位置(参见pgfplots手动的),如下所示:

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={60}{45}]
  \addplot3[surf, samples=30,domain=0:1, y domain=0:1,opacity=1,color=blue] 
    (x,{y*((1/4)*cos(deg(2*pi*x))+1-x/2)},0);
  \node (A) at (axis cs:0.8,0.8,0) {$D_g$};
  \addplot3[surf, domain=0:1, y domain=0:1,color=red,opacity=0.5]
    (x,{y*((1/4)*cos(deg(2*pi*x))+1-x/2)},{(1+sqrt(y)-sqrt(1-y))});
 \end{axis}
\end{tikzpicture}
\end{document}

您可以修改坐标0.8,0.8,0以将标签放置在您想要的任何位置。

最好的视角是主观的,如果绘制不同的函数,视角就会改变,所以恐怕这里只能采用反复试验的方法。

对于黑白输出,您可以使用环境选项colormap/blackwhiteaxis还可以将color=<value>每个图的选项更改为灰色的某种变体,例如graygray!30

相关内容