mirror of
https://github.com/MartinThoma/LaTeX-examples.git
synced 2025-04-18 19:18:21 +02:00
Add truncated normal distribution density function
This commit is contained in:
parent
fd7b16baa3
commit
ad0d83b2d2
4 changed files with 115 additions and 0 deletions
33
tikz/truncated-normal-distribution-density-function/Makefile
Normal file
33
tikz/truncated-normal-distribution-density-function/Makefile
Normal file
|
@ -0,0 +1,33 @@
|
|||
SOURCE = truncated-normal-distribution-density-function
|
||||
DELAY = 80
|
||||
DENSITY = 300
|
||||
WIDTH = 512
|
||||
|
||||
make:
|
||||
pdflatex --shell-escape $(SOURCE).tex -output-format=pdf
|
||||
make clean
|
||||
|
||||
clean:
|
||||
rm -rf $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot *.table
|
||||
|
||||
gif:
|
||||
pdfcrop $(SOURCE).pdf
|
||||
convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif
|
||||
make clean
|
||||
|
||||
png:
|
||||
make
|
||||
make svg
|
||||
inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png
|
||||
|
||||
transparentGif:
|
||||
convert $(SOURCE).pdf -transparent white result.gif
|
||||
make clean
|
||||
|
||||
svg:
|
||||
#inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg
|
||||
pdf2svg $(SOURCE).pdf $(SOURCE).svg
|
||||
# Necessary, as pdf2svg does not always create valid svgs:
|
||||
inkscape $(SOURCE).svg --export-width=$(WIDTH) --export-plain-svg=$(SOURCE)1.svg
|
||||
rsvg-convert -a -w 720 -f svg $(SOURCE)1.svg -o $(SOURCE).svg
|
||||
rm $(SOURCE)1.svg
|
|
@ -0,0 +1,8 @@
|
|||
Compiled example
|
||||
----------------
|
||||

|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
LaTeX and `gnuplot`
|
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
|
@ -0,0 +1,74 @@
|
|||
% used PGFPlots v1.14
|
||||
% (inspired by Jake's answer given here
|
||||
% <http://tex.stackexchange.com/a/340939/95441>)
|
||||
\documentclass[border=5pt]{standalone}
|
||||
\usepackage{pgfplots}
|
||||
\pgfplotsset{
|
||||
compat=1.3,
|
||||
}
|
||||
% create cycle lists that uses the style from OPs figure
|
||||
% <https://upload.wikimedia.org/wikipedia/en/d/df/TnormPDF.png>
|
||||
\pgfplotscreateplotcyclelist{line styles}{
|
||||
black,solid\\
|
||||
blue,dashed\\
|
||||
red,dotted\\
|
||||
orange,dashdotted\\
|
||||
}
|
||||
% define a command which stores all commands that are needed for every
|
||||
% `raw gnuplot' call
|
||||
\newcommand*\GnuplotDefs{
|
||||
% set number of samples
|
||||
set samples 50;
|
||||
%
|
||||
%%% from <https://en.wikipedia.org/wiki/Normal_distribution>
|
||||
% cumulative distribution function (CDF) of normal distribution
|
||||
cdfn(x,mu,sd) = 0.5 * ( 1 + erf( (x-mu)/sd/sqrt(2)) );
|
||||
% probability density function (PDF) of normal distribution
|
||||
pdfn(x,mu,sd) = 1/(sd*sqrt(2*pi)) * exp( -(x-mu)^2 / (2*sd^2) );
|
||||
% PDF of a truncated normal distribution
|
||||
tpdfn(x,mu,sd,a,b) = pdfn(x,mu,sd) / ( cdfn(b,mu,sd) - cdfn(a,mu,sd) );
|
||||
}
|
||||
\begin{document}
|
||||
\begin{tikzpicture}
|
||||
% define macros which are needed for the axis limits as well as for
|
||||
% setting the domain of calculation
|
||||
\pgfmathsetmacro{\xmin}{0}
|
||||
\pgfmathsetmacro{\xmax}{1}
|
||||
\begin{axis}[
|
||||
xmin=\xmin,
|
||||
xmax=\xmax,
|
||||
ymin=0,
|
||||
%ymax=0.23,
|
||||
%ytick distance=0.05,
|
||||
%enlargelimits=0.05,
|
||||
no markers,
|
||||
smooth,
|
||||
% use the above created cycle list ...
|
||||
cycle list name=line styles,
|
||||
% ... and append the following style to all `\addplot' calls
|
||||
every axis plot post/.append style={
|
||||
very thick,
|
||||
},
|
||||
yticklabel style={
|
||||
/pgf/number format/.cd,
|
||||
fixed,
|
||||
fixed zerofill,
|
||||
precision=2,
|
||||
},
|
||||
xlabel={x},
|
||||
ylabel={probability density},
|
||||
]
|
||||
\addplot gnuplot [raw gnuplot] {
|
||||
% first call all the "common" definitions
|
||||
\GnuplotDefs
|
||||
% and then create the data tables
|
||||
% in GnuPlot `x` key is identical to PGFPlots `domain` key
|
||||
plot [x=\xmin:\xmax] tpdfn(x,0.8,0.3, 0, 1);
|
||||
};
|
||||
\addplot gnuplot [raw gnuplot] {
|
||||
\GnuplotDefs
|
||||
plot [x=\xmin:\xmax] tpdfn(x,0.7,0.1, 0, 1);
|
||||
};
|
||||
\end{axis}
|
||||
\end{tikzpicture}
|
||||
\end{document}
|
Loading…
Add table
Add a link
Reference in a new issue