Pgfplots:图片随着样本大小移动!

Pgfplots:图片随着样本大小移动!

我对此还很陌生pgfplots,一定是我做错了什么。我正在使用以下代码绘制分段函数:

\documentclass{amsbook}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}

\begin{document}

\newcommand{\DELTA}{.3}
\pgfmathdeclarefunction{fdelta}{1}{%
    \pgfmathparse{%
      and(#1 >= 1-\DELTA/2, #1 <= 1+\DELTA/2) * (1 - 2 * abs(#1 - 1) / \DELTA)
    }
 }

\begin{tikzpicture}
  \begin{axis}[
      title={$f_{\delta}(x)$},
      xmin=0, xmax=2,
      xtick={0, .85, 1.15, 2},
      xticklabels={0, \(1-\frac{1}{2}\delta\), \(1+\frac{1}{2}\delta\), 2},
      ytick={0, 1},
    ]
    \addplot[domain=0:2, ultra thick]{fdelta(x)};
  \end{axis}
\end{tikzpicture}

\end{document}

现在,如果我将samples=11选项添加到\addplot,图片就会在生成的 PDF 文件中改变位置!如果我继续增加样本大小,图片最终会移出文档的边缘……

除了移动图问题之外,为分段线性函数找到合适的样本大小也有点令人沮丧,因为样本经常“错过”连接点。有没有办法也可以分段设置样本?

作为次要问题,是否可以像在函数定义中那样xtick使用来设置值?\DELTA

谢谢!

注意:我的示例使用amsbook,但我观察到与相同的行为standalone

答案1

我可以通过消除 后面的空格来消除这种行为\pgfmathparse

\documentclass{article}
\pagestyle{empty}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}


\newcommand{\DELTA}{.3}
\pgfmathdeclarefunction{fdelta}{1}{%
    \pgfmathparse{%
      and(#1 >= 1-\DELTA/2, #1 <= 1+\DELTA/2) * (1 - 2 * abs(#1 - 1) / \DELTA)%
    }%
 }

\newcommand{\g}[1]{
\begin{tikzpicture}[scale=0.75]
  \begin{axis}[
      title={$f_{\delta}(x)$},
      xmin=0, xmax=2,
      xtick={0, .85, 1.15, 2},
      xticklabels={0, \(1-\frac{1}{2}\delta\), \(1+\frac{1}{2}\delta\), 2},
      ytick={0, 1},
      samples=#1
    ]
    \addplot[domain=0:2, ultra thick]{fdelta(x)};
  \end{axis}
\end{tikzpicture}}

\begin{document}

\g{10}

\g{11}

\g{20}


\end{document}

示例代码输出

相关内容