Seite 1 von 1

pgfplots Koordinaten auf Achsen einzeichnen

Verfasst: Mi 3. Mär 2010, 20:49
von w3rd
Hallo,

ist soetwas:
http://www.texample.net/tikz/examples/i ... ing-lines/
mit pgfplot möglich? Ich meine die gestrichelten Linien.

Ich habe schon das hier versucht:
\draw (axis cs:150,\the\numexpr exp(-0.5*(((150-\Intensity)/50)**2)) \relax) |- (0,0);
aber anscheinend geht das nicht mit \numexpr...
Gibts einen einfachere Weg oder kann mir jmd sagen, wieso mein Versuch nicht funktioniert? Ich vermute das exp.

Danke![/code]

ok neuer Versuch

Verfasst: Mi 3. Mär 2010, 21:40
von w3rd
Mit \pgfmathparse:
\def\Intensity{200}
\def\IntensityN{100}

\begin{tikzpicture}

	\begin{axis}[ 
		axis x line=bottom, 
		axis y line=center, 
		tick align=outside, 
		] 
		\addplot[blue,mark=none, domain=0:255,samples=50] function{exp(-0.5*(((x-\Intensity)/50)**2))};
		\pgfmathparse{exp(-0.5*(((\IntensityN-\Intensity)/50)^2))} 
		\draw[dashed] (axis cs:\IntensityN,\pgfmathresult) node[right]{\IntensityN,\pgfmathresult} -- (intersection of 0,0--250,0 and \IntensityN,0--\IntensityN,1);
	\end{axis} 

\end{tikzpicture}
Komischerweise ist \IntensityN immer 0.4. Wieso das?

Zu pgfmathresult

Verfasst: Do 25. Mär 2010, 22:39
von Feuersaenger
Hallo w3rd,

innerhalb von pgf/TikZ wird \pgfmathresult sehr oft ueberschrieben. Probiere mal,
\pgfmathparse{....}
\let\tempvariable=\pgfmathresult

und arbeite dann mit \tempvariable weiter. Das "\let" kopiert \pgfmathresult und erstellt einen neuen Namen. Diese neue Variable "gehoert" Dir und wird nicht ueberschrieben (nimm am besten etwas, was nicht zufaellig in irgendeinem Paket vorkommt).

Kommst Du damit weiter?

Mit liebem Gruss

Christian

Re: Zu pgfmathresult

Verfasst: Fr 26. Mär 2010, 07:43
von KOMA
Feuersaenger hat geschrieben:nimm am besten etwas, was nicht zufaellig in irgendeinem Paket vorkommt
Um das sicher zu stellen, deklariert man in der Dokumentpräambel das neue Makro als neue Anweisung:
\newcommand*{\tempvariable}{}
Sollte bereits ein Paket die Anweisung \tempvariable definiert haben, wird dann an der Stelle ein Fehler gemeldet. Nachdem man das neue Makro auf diese Weise abgesichert hat, kann man mit \tempvariable machen, was man will, auch \let\tempvariable... innerhalb des Dokuments.

Da leider viele Paketautoren in ihren Paketen \def an Stelle von \newcommand verwendet, sollten eigene \newcommand-Anweisungen in der Präambel übrigens am besten erst nach dem Laden der Pakete stehen. Und Paketautoren sollten sich endlich daran gewöhnen, Anweisungen mit \newcommand abzusichern!

Verfasst: Fr 21. Mai 2010, 14:18
von w3rd
super, danke! So hat es funktioniert.