PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gauss-Kurven in Tikz



wewi
12-03-2010, 16:50
Hallo,

ich bin verzweifelt auf der Suche nach einer Möglichkeit Gauss-Kurven in Tikz zu zeichnen.(Problem Nr. 1) Sie soll dabei um 270° gedreht sein. Des Weiteren würde ich zur Not ja eine Parabel benutzen, aber hier liefert tikz nicht die Möglichkeit einfach, ohne das Kommando rotate=270 zu benutzen, die Parabel in der gewünschten Weise zu drehen. Über zB.: \draw parabola (0,0) [bend at 0.5] +(1,0) +(0,0.5) kommt nur einn komischer Zacken zustande.(Problem Nr.2).
Hier ein kleines Minimalbsp zum selber Anschauen:




\documentclass[a4paper]{scrreprt}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw (-1,0) parabola[bend pos=0.5] bend +(-1,0) +(0,-0.5);
\draw (0,-1) parabola[bend pos=0.5] bend +(0,-1) +(0.5,0);
\end{tikzpicture}

\end{document}



Wißt ihr vielleicht eine Möglichkeit?
Vielen Dank :)

bobmalaria
12-03-2010, 20:21
hi,


wäre es eine option für dich das auf tikz basierende paket zu verlegen. wenn selbst das nicht genügt, hätte ich noch eine kombi von tikz/pgfplots+gnuplot start. meinst du mit gauß kurve eine verteilung?

localghost
12-03-2010, 22:21
Hier mal ein grobes Gerüst. Es benutzt extern Gnuplot (http://gnuplot.info). Hinweise in der Anleitung bezüglich -shell-escape beachten.

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[domain=-4:4,y=4cm,samples=200,rotate=90]
\draw[color=blue] plot[id=gauss] function {1/sqrt(2*pi)*exp(-0.5*x**2)};
\end{tikzpicture}
\end{document}
Falls es ein richtiges Diagramm werden soll, ist der Vorschlag von bobmalaria bezüglich pgfplots (http://ctan.org/pkg/pgfplots) hilfreich.


MfG
Thorsten

wewi
13-03-2010, 11:20
Vielen Dank!

Das obligatroische "aber" kommt nun...:-)
Ich möchte ein Banddiagramm zeichnen, zB sowas hier:Banddiagramm (http://www.tf.uni-kiel.de/matwis/amat/mw2_ge/kap_4/illustr/band_band_uebergaenge.gif). In ihm möchte ich die Zustandsdichte einzeichnen(also eine Verteilung), wofür ich die Gauss-Kurve bräuchte und zu allem übel mit schraffiert Fläche unter der Kurve, eigentlich ist schon alles soweit fertig nur das bremst noch.
Ich habe mich minimal mit Gnuplot beschäftigt und bin leider nicht über das Darstellen einer Sinusfunktion in aller Schnelle hinausgekommen. Folgendes habe ich möglicherweise soweit verstanden: Ich müßte mit gnuplot einen Datensatz "gauss" erzeugen, der dann mittels \draw[color=blue] plot[id=gauss] function {1/sqrt(2*pi)*exp(-0.5*x**2)}; dargestellt wird.
Zwei Fragen:
Wie erzeuge ich ihn in gnulot?
Und ist es dann möglich ihn in tkiz so einzubinden, daß die Fläche unter der Kurve schraffiert wird?
Also beim Schraffiern bin ich mir nur nicht sicher, da hier ja \draw benutzt wird und das ja eigentlich keine Probleme bereiten dürfte...
Ich hoffe die Fragen sind nicht allzu blöde, ich nutze schon länger Latex und wollte für meine Diplomarbeit mein Können darin erweiteren mit Vektorgrafiken und solchen stuff. In Tikz hab ich mich so durch die manual durch gewurschtelt, die für einen normalen Latex-user auch nicht so das Ding is.
Im Übrigen benutze ich Miktex 2.7 und das TeXnicCenter.
Vielen Dank für eure Zeit schonmal...

localghost
13-03-2010, 12:10
Also, soweit ich das sehe, brauchst Du für dieses Zonenschema nicht wirklich Gnuplot. Die Kurven kannst Du sehr gut mit Bézier-Kurven realisieren.

Das verlinkte Diagramm ließe sich recht einfach nachbauen. Für die Schraffur wäre eine Skizze ganz hilfreich.

Das Handbuch von pgf/tikZ (http://ctan.org/pkg/pgf) ist eines der umfangreichsten. Dafür erklärt es aber auch alles. Die Lektüre wird daher etwas Zeit kosten.

wewi
13-03-2010, 13:28
Jo, vielen Dank für den Tip mit den Bezier-Kurven (http://de.wikipedia.org/wiki/B%C3%A9zierkurve). Nach einigem Ausprobieren ging's dann auch recht gut damit. :)
Natürlich ist das keine sehr elegante Lösung, da man mindestens 3-Kurven braucht. Oder wißt ihr eine Möglichkeit, in der man mehr als 2-Wendepunkte angeben kann. Also sowas wie:
\draw (0,0) controls (0.5,1) and (1.5,1) and (1.7,0.4) ... (0,2)
usw geht ja leider nicht.
Mit 3 Bezier-Kurven sieht der Spaß folgender Maßen aus:


\documentclass{scrreprt}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\draw (-0.3,-0.7) .. controls (-0.25,-0.9)..(-0,-1) -- (0,-1) .. controls (2,-1.5) .. (0,-2) -- (0,-2) .. controls (-0.25,-2.1)..(-0.3,-2.3);
\end{tikzpicture}

\end{document}

Ein Monstrum sozusagen.
Die Lösung birgt für mich den Vorteil, daß ich sie schnell umsetzen kann, aber vielleicht habt ihr ja noch irgendwelche gute Ideen...

Ach ja, und ich muß das Manual zu pgf/tikz echt mal loben! Der gute Mann hat sich da echt sehr viel Mühe gegeben und es ist mir selten so ein gutes Handbuch unter die Finger(bzw. Augen) gekommen. Respekt! Besonders das zweite Tutorial hat mir wegen des Vornamens schon gefallen.

localghost
13-03-2010, 17:35
Also, ich bin einigermaßen irritiert, weil ich den Zusammenhang mit dem Zonenschema nicht sehe. Aber vielleicht kannst Du das Endergebnis ja mal präsentieren, wenn es soweit ist. Für's Erste kannst Du natürlich die Fläche unter der Kurve auch schraffieren.

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{patterns}

\begin{document}
\begin{tikzpicture}[domain=-4:4,y=4cm,samples=500,rotate=270]
\draw[blue,pattern color=blue,pattern=north east lines] plot[id=gauss] function {1/sqrt(2*pi)*exp(-0.5*x**2)} -- cycle;
\end{tikzpicture}
\end{document}