pgfplots Koordinaten auf Achsen einzeichnen Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


w3rd

pgfplots Koordinaten auf Achsen einzeichnen

Beitrag 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]

w3rd

ok neuer Versuch

Beitrag 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?

Feuersaenger

Zu pgfmathresult

Beitrag 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

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: Zu pgfmathresult

Beitrag 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!

w3rd

Beitrag von w3rd »

super, danke! So hat es funktioniert.

Antworten