我想要在一个 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}