“samples x=0”选项导致 addplot3 出现错误

“samples x=0”选项导致 addplot3 出现错误

我正在尝试绘制 ln(z) 的黎曼曲面,并编写了以下代码:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\begin{document}
\begin{tikzpicture}
 \begin{axis}[view={60}{30},
    domain=-10:10,
    y domain=-10:10]
    \addplot3[surf, samples=50] {atan2(y,x)/180*pi};
    \addplot3[surf, samples=50] {atan2(y,x)/180*pi+2*pi};
  \end{axis}
\end{tikzpicture}
\end{document}

然而,这会产生类似如下的图像:

这

其中有一个跳跃,我想消除它。

我尝试写

\begin{axis}[view={60}{30},
   domain=-10:10,
   y domain=-10:10]
   \addplot3[surf, samples=50, samples y=0] {atan2(y,x)/180*pi};
   \addplot3[surf, samples=50, samples y=0] {atan2(y,x)/180*pi+2*pi};
 \end{axis}
\end{tikzpicture}

但编译器返回错误,

! 软件包 pgfplots 错误:抱歉,您不能在此上下文中使用“y”。PGFPlots 期望采样一条线,而不是一个网格。

如何修复此问题?发生了什么?

答案1

samples y设置计算数据点的域中的 y 值的数量。因此,将其设置为零是没有意义的,否则您将根本得不到任何点。

我猜你想要下面的输出,我在这里做的是将每个表面分成两部分,一个用于 y<0,一个用于 y>0。我不知道这是否是最好的方法。

在此处输入图片描述

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture}
 \begin{axis}[view={60}{30},
    domain=-10:10,
    ]
    \addplot3[surf, samples=25,y domain=-10:-0.001] {atan2(y,x)/180*pi};
    \addplot3[surf, samples=25,y domain=0.001:10]   {atan2(y,x)/180*pi};

    \addplot3[surf, samples=25,y domain=-10:-0.001] {atan2(y,x)/180*pi+2*pi};
    \addplot3[surf, samples=25,y domain=0.001:10] {atan2(y,x)/180*pi+2*pi};
  \end{axis}
\end{tikzpicture}
\end{document}

相关内容