TikZ/pgfplots: node pos nur anhand von Abzisse

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: TikZ/pgfplots: node pos nur anhand von Abzisse

von mofehl » So 30. Jul 2017, 15:39

Hallo esdd,

vielen Dank für Deine Antwort! Dein Vorschlag gefällt mir gut, auch wusste ich nicht, dass man eine Funktion in pgf definieren kann. Zur Zusatzfrage: Lösung gefällt mir auch gut.

LG

von esdd » So 30. Jul 2017, 14:18

Hier ist mal ein Vorschlag:
\documentclass[border=1cm]{standalone} 
\usepackage{pgfplots}% lädt auch tikz
\pgfplotsset{compat=newest}

\pgfset{
  declare function={
    myfunction(\x,\parameter) = (\x^\parameter)/(\x^\parameter+(1-\x)^\parameter)^(1/\parameter));
  },
}
\begin{document} 
\begin{tikzpicture} 
\begin{axis}[ 
   domain=0:1, 
   samples=200,
   xtick={0,0.1,...,1.01}, %Zusatzfrage 
   ytick={0,0.1,...,1},
   no marks, 
] 

\addplot [densely dashed,samples=2] {x};

\addplot {myfunction(x,.45)}node[below,font=\tiny] at(.8,{myfunction(.8,.45)}){I};
\addplot {myfunction(x,.61)}node[below,font=\tiny] at(.8,{myfunction(.8,.61)}){II};
\addplot {myfunction(x,.75)}node[below,font=\tiny] at(.8,{myfunction(.8,.75)}){III};

\end{axis} 
\end{tikzpicture} 
\end{document}
Bild

Zur Zusatzfrage: Das ist der Rechenungenauigkeit von TikZ geschuldet. Du kannst alternativ auch etwas verwenden wie
xtick distance=.1,
xtickmin=0,xtickmax=1,
Dateianhänge
gl_plotbeschr.png
gl_plotbeschr.png (13.36 KiB) 1894 mal betrachtet

TikZ/pgfplots: node pos nur anhand von Abzisse

von mofehl » So 30. Jul 2017, 12:15

Hallo liebes Forum,

folgende Frage beschäftigt mich. Ich habe eine Funktion, bei der ich die Auswirkungen unterschiedlicher Parameter zeigen möchte. Also plotte ich die Funktion in pgfplots mit jeweils unterschiedlichen Einstellungen. Jetzt möchte ich die drei Varianten mit I, II und III beschriften. Dazu benutze ich die Einstellung pos=<Wert>. So wie ich das verstehe, berechnet TikZ intern die Länge vom Plot und setzt den Node dann an die entsprechende Stelle. Ich würde aber gerne, dass die Nodes in Abhängigkeit vom Abzissenwert (x-Achse) gesetzt werden. Denn das Problem ist, dass Funktionen, die stärker oszillieren, von TikZ eine größere Länge bekommen. Daher bedeutet pos=<Wert> für jeden Plot etwas anderes. Im Prinzip suche ich so etwas wie "x pos=<Wert>". Hat jemand mein Problem verstanden und kann mir helfen? Hier ein MWE:
\documentclass[border=1cm]{standalone}
\usepackage{tikz,pgfplots}

\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
	domain=0:1,
	samples=200,
	xtick={0,0.1,...,1.01}, %Zusatzfrage
	ytick={0,0.1,...,1},
	no marks,
]

\addplot [densely dashed] {x};

\addplot {(x^.45)/(x^.45+(1-x)^.45)^(1/.45))} node [pos=.6,below] {I};
\addplot {(x^.61)/(x^.61+(1-x)^.61)^(1/.61))} node [pos=.6,below] {II};
\addplot {(x^.75)/(x^.75+(1-x)^.75)^(1/.75))} node [pos=.6,below] {III};

\end{axis}
\end{tikzpicture}
\end{document}
Zusatzfrage: Warum verschwindet der letzte y-Tick, wenn ich wie im Code explizit angebe, wie die Ticks laufen sollen? Um das Problem zu umgehen, verwende ich bis dato immer einen leicht höheren Wert für den letzten Tick, damit er erscheint. In diesem Fall erscheint der x-Tick bei 1, nicht aber der y-Tick.

Bild
Dateianhänge
Clipboard01.jpg
Clipboard01.jpg (48.64 KiB) 1900 mal betrachtet

Nach oben