如果我最后编译此代码时不使用高斯函数,则一切都正常,但如果我尝试使用它,整个图形就会向右移动。
在这个例子中,这不是一个很大的问题,但在我的原始代码中,我需要将图形放大,而当添加高斯时,图形的一半会超出页面。我尝试了一些适用于其他浮动对象的方法,但似乎都没有用。
\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))}%
}