![如何正确绘制直方图?](https://linux22.com/image/385998/%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E7%BB%98%E5%88%B6%E7%9B%B4%E6%96%B9%E5%9B%BE%EF%BC%9F.png)
当然,这是一个简单的问题,但我找不到解决方案。假设您想要模拟围绕平均值且具有一定扩展度的频率的高斯分布。编写以下代码是一项简单的任务
\documentclass[tikz,border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=1]
\pgfmathsetseed{431}%
\pgfmathsetmacro{\mu}{0}
\pgfmathsetmacro{\sigma}{1}
\fill[red,opacity=.5,domain=-3:3,variable=\x,smooth] plot ({\x},{(10/sqrt(2*pi)*\sigma)*exp(-((\x-\mu)^2)/(2*\sigma^2))});
\foreach \k in {-3,-2.9,...,3}
{
\pgfmathsetmacro{\y}{(10/sqrt(2*pi)*\sigma)*exp(-((\k- \mu)^2)/(2*\sigma^2))}
\draw[xshift=-1.5pt](\k,0)rectangle(\k+1/10,\y+rand/10);
}
\end{tikzpicture}
\end{document}
但是如果我们想用一条沿着顶部边框的连续线来绘制直方图,那么代码应该是什么呢?
答案1
如果我正确理解了您的问题,您可以使用 pgfplots 中的“const plot”来执行此操作。 (这里实际上不是直方图;它是一个分析阶跃函数。)
\documentclass[tikz,border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\pgfmathsetmacro{\mu}{0}
\pgfmathsetmacro{\sigma}{1}
\begin{axis}
\addplot[samples=30,domain=-3:3,const plot] {1/(2*\sigma*sqrt(pi))*exp(-(x-\mu)^2/(2*\sigma^2))};
\end{axis}
\end{tikzpicture}
\end{document}
得出结果