pgfplots 和 ifthenelse

pgfplots 和 ifthenelse

说实话,下面的例子并不完全像我预期的那样。

\documentclass{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
% taken from http://tex.stackexchange.com/questions/15475/using-ifthenelse-in-pgfmath
\pgfmathdeclarefunction{ifthenelsefpu}{3}{%
  \pgfmathparse{#1*#2 + !#1*#3}%
}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    scale only axis,
  ]
    \addplot3[
      surf,
      samples = 20,
      domain = -1:1,
      y domain = -1:1,
    ] ({x}, {y}, {ifthenelsefpu({(x==0) && (y==0)},1,0)});
  \end{axis}
\end{tikzpicture}
\end{document}

结果应该是 (0,0) 处的单峰,但是......

[这里应该有一张图片,但目前我无法上传 - 抱歉]

答案1

在每个方向上采样,20样本点在从到的区间内,从而-1错过10。更改为21样本可得出

示例输出

最简单的例子可能是样本的情况2,这些是-1和 ,13样本是-101。在20样本情况下,第一个样本是-1,另一个样本是2/19,因此值列表是

-1, -17/19, -15/19, -13/19, -11/19, -9/19, -7/19, -5/19, -3/19, -1/19

以及相应的正值。

\documentclass{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
% taken from http://tex.stackexchange.com/questions/15475/using-ifthenelse-in-pgfmath
\pgfmathdeclarefunction{ifthenelsefpu}{3}{%
  \pgfmathparse{#1*#2 + !#1*#3}%
}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    scale only axis,
  ]
    \addplot3[
      surf,
      samples = 21,
      domain = -1:1,
      y domain = -1:1,
    ] ({x}, {y}, {ifthenelsefpu({(x==0) && (y==0)},1,0)});
  \end{axis}
\end{tikzpicture}
\end{document}

相关内容