添加绘图时图形会改变位置

添加绘图时图形会改变位置

如果我最后编译此代码时不使用高斯函数,则一切都正常,但如果我尝试使用它,整个图形就会向右移动。

在这个例子中,这不是一个很大的问题,但在我的原始代码中,我需要将图形放大,而当添加高斯时,图形的一半会超出页面。我尝试了一些适用于其他浮动对象的方法,但似乎都没有用。

    \documentclass{article}

\usepackage{pgfplots}
    \pgfmathdeclarefunction{gauss}{2}
    {
        \pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%Gauss #2=sigma; #1=phi
    }

\begin{document}
    \pgfplotstableread
    {
        d
        10.35053421
        11.81898404
        12.89666307
        11.28088572
        12.35758085
        11.80645398
    }\datatableA

\begin{tikzpicture}
   \begin{axis}
      \addplot[
      hist={
        data min = 10,
        data max = 13,
      },
      bar direction = y,
      ] table [        
        y = d,
      ] {\datatableA};
      \addplot [domain = 0:18, ]{gauss(12,3)};
  \end{axis}
\end{tikzpicture}

\end{document}

答案1

问题在于,声明函数时,会产生虚假的空间(因此问题不在于图本身)。我用一个点标记了该空间:

\pgfmathdeclarefunction{gauss}{2}
{.
    \pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}

如果您从函数定义行尾删除所有空格,并%在花括号后立即添加,则可以消除问题。您可以安全地制表内部命令,这仍然无关紧要。所以这是正确的版本(我个人缩进和放置花括号的方式不同,但在您的代码中使用相同的符号是可行的):

\pgfmathdeclarefunction{gauss}{2}{% <--- add this
    \pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}

相关内容