
Дополнительный вопросПостроение колоколообразной кривой в TikZ-PGF
Я новичок в LaTeX, и я верстаю документ для моего класса статистики и пытаюсь использовать LaTeX для создания нормального распределения вероятностей. Я изменил код, показанный в ответе Джейка на вопрос, на который я ссылался здесь, и получил следующее:
\documentclass{article}
\usepackage{pgfplots}
\pgfmathdeclarefunction{gauss}{2}{% normal distribution where #1 = mu and #2 = sigma
\pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
no markers, domain=2.1:2.3, samples=100,
axis lines*=left,
height=5cm, width=12cm,
xtick={2.12, 2.14, 2.16, 2.18, 2.2, 2.22, 2.24, 2.26, 2.28}, ytick={0.5, 1.0},
enlargelimits=false, clip=false, axis on top,
]
\addplot{gauss(2.2,0.0179)};
\end{axis}
\end{tikzpicture}
\end{document}
Проблема в том, что при компиляции значения оси Y далеки от тех, где они должны быть:
Как это исправить?
Мне интересно, является ли это системной проблемой, потому что вывод, показанный в ответе Джейка наКривая колокола/Функция Гаусса/Нормальное распределение в TikZ/PGFимеет соответствующие значения оси Y, и я не вижу, почему должно быть иначе.
решение1
Вы не получаете значения между 0 и 1 для y
оси - из-за мультипликативного множителя 1/(#2*sqrt(2*pi))
в выражении для функции. Используя
ytick={0.5, 1.0}
дает слишком малые значения для фактического диапазона, который принимает значения от 0 до приблизительно 20; . Используйте соответствующий диапазон значений на оси Y:
\documentclass{article}
\usepackage{pgfplots}
%\pgfplotsset{compat=1.10}
\pgfmathdeclarefunction{gauss}{2}{% normal distribution where #1 = mu and #2 = sigma
\pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
no markers, domain=2.1:2.3, samples=100,smooth,
axis lines*=left,
height=5cm, width=12cm,
xtick={2.12, 2.14, 2.16, 2.18, 2.2, 2.22, 2.24, 2.26, 2.28},
ytick={4.0,8.0,...,20.0},
enlargelimits=upper, clip=false, axis on top,
]
\addplot{gauss(2.2,0.0179)};
\end{axis}
\end{tikzpicture}
\end{document}
Или, чтобы получить правильный диапазон от 0 до 1, опустите множитель в определяющем уравнении:
\documentclass{article}
\usepackage{pgfplots}
%\pgfplotsset{compat=1.10}
\pgfmathdeclarefunction{gauss}{2}{% normal distribution where #1 = mu and #2 = sigma
\pgfmathparse{exp(-((x-#1)^2)/(2*#2^2))}%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
no markers, domain=2.1:2.3, samples=100,smooth,
axis lines*=left,
height=5cm, width=12cm,
xtick={2.12, 2.14, 2.16, 2.18, 2.2, 2.22, 2.24, 2.26, 2.28},
enlargelimits=upper, clip=false, axis on top,
]
\addplot{gauss(2.2,0.0179)};
\end{axis}
\end{tikzpicture}
\end{document}