一个 Tikz 图形中不同位置的多个高斯曲线

一个 Tikz 图形中不同位置的多个高斯曲线

我想要在一个 Tikz 图形的不同位置有多条高斯曲线。

我无法将每条高斯曲线放置在其预期点(以下代码中的 2、6 和 12)的上方。此外,两条曲线甚至看起来都不是高斯曲线。

我还想摆脱曲线之间的直线,所以我制作了三个不同的轴,但出现了编译错误。

编辑:根据 Torbjørn 的评论,我修改了代码。我仍然遇到轴和图形之间坐标不匹配的问题。

这是我的代码:

\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{positioning,calc}

\begin{document}
\begin{tikzpicture}

\newcommand\gauss[2]{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))} % Gauss function, parameters mu and sigma

\newcommand\tX{0}
\newcommand\tY{0}

% Define Nodes
\node[](t1) at ({\tX+0},{\tY}){};
\node[](t2) at ({\tX+2},{\tY}){};
\node[](t3) at ({\tX+6},{\tY}){};
\node[](t4) at ({\tX+12},{\tY}){};
\node[](t5) at ({\tX+14},{\tY}){};

% Draw line between them
\draw[line width=1pt] let \p1=(t1), \p2=(t2), \p3=(t3), \p4=(t4), \p5=(t5) in
     (\p1)--(\p2)--(\p3)--(\p4)--(\p5) ;

\foreach \x in {1,...,5} {
    \node[](tmp) at (t\x) {};
    \draw[line width=1pt] let \p1=(tmp) in (\x1,{\y1-3})--(\x1,{\y1+3});
}

\begin{axis}[
  hide axis,
  no markers,
  at={(0,0)},
  y=0.5cm,
  x=1cm] 
\addplot[samples=50, domain=1:3] {\gauss{2}{0.1}};
\addplot[samples=50, domain=4.5:7.5] {\gauss{6}{0.3}};
\addplot[samples=50, domain=11:13] {\gauss{12}{0.1}};
\end{axis}

\end{tikzpicture}
\end{document}

答案1

混合使用普通tikz命令和 PGFPlotsaxis环境有时会有点棘手。在这种情况下,我认为最好还是坚持使用 PGFPlots:您可以调整轴的外观以获得所需的结果。

\documentclass[margin=10pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{positioning,calc}

\begin{document}
\begin{tikzpicture}

\newcommand\gauss[2]{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))} % Gauss function, parameters mu and sigma

\begin{axis}[
  hide y axis,
  axis x line*=bottom,
  xtick align=center,
  tickwidth=0.3cm,
  xticklabels={},
  xmin=0, xmax=14,
  xtick={0,2, 6, 12, 14},
  no markers,
  at={(0,0)},
  y=0.5cm,
  x=1cm] 
\addplot[samples=50, domain=1:3] {\gauss{2}{0.1}};
\addplot[samples=50, domain=4.5:7.5] {\gauss{6}{0.3}};
\addplot[samples=50, domain=11:13] {\gauss{12}{0.1}};
\end{axis}

\end{tikzpicture}
\end{document}

相关内容