Tikz - Gausskurve plotten.

Tabellen und Grafiken erstellen und anordnen


nawide
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Okt 2015, 15:29

Tikz - Gausskurve plotten.

Beitrag von nawide »

Hallo Liebe Mitglieder,

ich habe folgendes Problem: Ich möchte in Latex eine Glockenkurve darstellen lassen, diese wird beim Kompilieren nicht angezeigt. Hab leider keine Ahnung, woran es liegen könnte. Bin Neuling auf dem Latex-Gebiet!
\documentclass[a4paper,11pt,openany]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{graphicx, subfig}
\graphicspath{{img/}}
\usepackage{fancyhdr}
\usepackage{lmodern}
\usepackage{color}

\usepackage{pgfplots}
\usepgfplotslibrary{dateplot}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}

\begin{document}
\begin{tikzpicture}
\draw (0cm,0cm) -- (15cm,0cm);
\draw[domain=0:15] plot[id=gauss0, samples=50] function{1/sqrt(2*pi)*exp(-0.5*x**2)};
\end{tikzpicture}
\end{document}

Mir wird nur die X-Achse angezeigt, aber keine Glockenkurve. Jemand vielleicht eine Idee?

Beste Grüße
Nawide

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hast Du gnuplot installiert? Wird dieses Programm gefunden, wenn Du es in der Konsole aufrufst? Rufst Du pdflatex mit --shell escape auf?

nawide
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Okt 2015, 15:29

Beitrag von nawide »

Hi,

wie gesagt bin ich totaler Neuling. Ich kann leider nicht so wirklich was mit deiner Antwort anfangen :/

Beste Grüße

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

So wie ich das sehe, hast Du drei Möglichkeiten zum Plotten von Funktionen:
  • Mit TikZ' eingebauten Funktionen, siehe Kapitel 22 im Handbuch
  • Mit TikZ' datavisualization-Modul, siehe Teil VI im Handbuch
  • Mit pgfplots, siehe dessen Handbuch
Die Eingabe, die Du postest, scheint mir auf die Schnelle, als ob Du pgfplots mit gnuplot als Rechner im Hintergrund nehmen willst, aber vergessen hast, das ganze in eine axis-Umgebung zu schreiben…

Die erste Möglichkeit verlangt eine andere Eingabe:
\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \draw (0cm,0cm) -- (15cm,0cm);
  \draw[domain=0:15] plot[id=gauss0, samples=50]
    (\x,{1/sqrt(2*pi)*exp(-.5*\x^2)}) ;
\end{tikzpicture}

\end{document}
Hast Du Dich schon durch die verschiedenenHandbücher gelesen? Wenn nicht, solltest Du das erst mal machen und mit den dort angegebenen Beispielen etwas spielen… Ich würde empfehlen, [d]pgfplots[/d] zum Plotten von Funktionen zu verwenden. Dann sieht die Eingabe aber wieder anders aus:
\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[domain=0:15,samples=50]
    \addplot[black] {1/sqrt(2*pi)*exp(-.5*x^2)} ;
  \end{axis}
\end{tikzpicture}

\end{document}
Für beide meine Beispiele braucht man kein gnuplot.

Grüße
Clemens
Paketauthor

nawide
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Okt 2015, 15:29

Beitrag von nawide »

Hi,

vorab danke ich dir für deine Antwort. Kannst du mir vllt erklären, wie gnuplot installiere und in Latex verwende?

Deine beiden Minimalbeispiele liefern leider keine Glockenkurve, wenn ich sie kompiliere :/

Beste Grüße

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

nawide hat geschrieben:Deine beiden Minimalbeispiele liefern leider keine Glockenkurve, wenn ich sie kompiliere
Bei mir schon… (ohne gnuplot)

Grüße
Clemens
Paketauthor

nawide
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Okt 2015, 15:29

Beitrag von nawide »

Beim zweiten min Beispiel wird mir Folgendes ausgegeben:
Dateianhänge
2015-11-26 18_37_22-Start.png
2015-11-26 18_37_22-Start.png (9.71 KiB) 3507 mal betrachtet

Gast

Beitrag von Gast »

Na, das ist schon eine Gaußkurve, nur ist die Domain nicht um 0 zentriert, weswegen die Wiedererkennbarkeit ein wenig leidet. Wenn wir als Domain [-3,3] wählen (mit domain=-3:3), wirst Du die Gaußkurve wiedererkennen.
\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[domain=-3:3,samples=50]
    \addplot[black] {1/sqrt(2*pi)*exp(-.5*x^2)} ;
  \end{axis}
\end{tikzpicture}

\end{document}
Damit dieser Beitrag noch einen Mehrwert hat, hier eine leicht angepasste Version von der Gaußkurve aus TeX.SX: Plotting Normal distribution in pgfplots, die gerne verwende.
\documentclass{article}
\usepackage{pgfplots}
% #1 is x; #2 is \mu; #3 is \sigma^2
\pgfmathdeclarefunction{gauss}{3}{%
  \pgfmathparse{1/(sqrt(#3*2*pi))*exp(-((#1-#2)^2)/(2*#3))}%
}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  domain=-3:3, 
  samples=100,
  ymin=0,
  axis lines*=left, 
  xlabel=$x$,
  every axis x label/.style={at=(current axis.right of origin),anchor=west},
  height=7cm, 
  width=14cm,
  xtick=\empty, 
  enlargelimits=false, 
  clip=false, 
  hide y axis
  ]

  \pgfmathsetmacro\gsmu{0}
  \pgfmathsetmacro\gssg{1}
  \pgfmathsetmacro\gsvalmin{gauss(\gsmu-\gssg,\gsmu,\gssg)}
  \pgfmathsetmacro\gsvalmn{gauss(\gsmu,\gsmu,\gssg)}
  \pgfmathsetmacro\gsvalplu{gauss(\gsmu+\gssg,\gsmu,\gssg)}

  \addplot [ultra thick,cyan!60!black] {gauss(x, \gsmu, \gssg)};

  \draw [lightgray, dashed] (axis cs:\gsmu-\gssg,0) -- (axis cs:\gsmu-\gssg,\gsvalmin)
                            (axis cs:\gsmu+\gssg,0) -- (axis cs:\gsmu+\gssg,\gsvalplu);
  \draw [lightgray, dashed] (axis cs:\gsmu,0) -- (axis cs:\gsmu,\gsvalmn);

  \node[below] at (axis cs:\gsmu-\gssg, 0)  {$\mu - \sigma$}; 
  \node[below] at (axis cs:\gsmu, 0)        {$\mu$}; 
  \node[below] at (axis cs:\gsmu+\gssg, 0)  {$\mu + \sigma$}; 

  \node [yshift=1cm, scale=1.8] at (axis cs: \gsmu, 0)
    {$\displaystyle f(x) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}$};
\end{axis}
\end{tikzpicture}
\end{document}

nawide
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Okt 2015, 15:29

Beitrag von nawide »

Perfekt! Danke dir. Da hatte ich wohl nen kleinen Denkfehler. Du kannst mir nicht zufällig sagen, wie ich die Glockenkurve nur mit einer x-Achse ohne Nummerieung anzeigen lassen kann?

Gast

Beitrag von Gast »

Du kannst mit dem zweiten Codebeispiel ein wenig rumspielen
\documentclass{article}
\usepackage{pgfplots}
% #1 is x; #2 is \mu; #3 is \sigma^2
\pgfmathdeclarefunction{gauss}{3}{%
  \pgfmathparse{1/(sqrt(#3*2*pi))*exp(-((#1-#2)^2)/(2*#3))}%
}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  domain=-3:3,
  samples=100,
  ymin=0,
  axis lines*=left,
  xlabel=$x$,
  every axis x label/.style={at=(current axis.right of origin),anchor=west},
  height=7cm,
  width=14cm,
  xtick=\empty,
  enlargelimits=false,
  clip=false,
  hide y axis
  ]

  \addplot [ultra thick,cyan!60!black] {gauss(x, 0, 1)};
\end{axis}
\end{tikzpicture}
\end{document}
für die Einteilung der x-Achse musst Du die Zeile xtick=\empty, auskommentieren.

Oder im ersten Beispiel
\documentclass{article}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[domain=-3:3, samples=50, hide y axis, axis x line=bottom, xtick=\empty]
    \addplot[black] {1/sqrt(2*pi)*exp(-.5*x^2)} ;
  \end{axis}
\end{tikzpicture}

\end{document}

die Optionen haben eigentlich recht aussagekräftige Namen.

Für tiefergehende Auskünfte und viel mehr Beispiele sei Dir die [d]pgfplots[/d]-Doku ans Herz gelegt.

Antworten