Seite 1 von 1

Koordinaten außerhalb der axis-Umgebung von pgfplot abfragen

Verfasst: Mo 20. Feb 2017, 14:12
von Jens-Gast
Hallo,

ich habe einen pgfplot, der die entsprechenden Daten aus einer .dat-Datei holt. Nachdem ich den Plot zeichnen lasse, möchte ich im nächsten Schritt außerhalb der axis-Umgebung noch eine Linie von einem Punkt zu einem anderen zeichnen lassen. Das Problem dabei ist, dass ich nicht weiß, wie ich auf die Koordinaten der Punkte vom pgfplot bzw. aus der Datei zugreifen kann. Ich suche also nach einem Befehl bzw. nach einer Möglichkeit "Zeichne eine Linie von Koordinate 2 bis Koordinate 4". Hier das zugehörige Minimalbeispiel:
\begin{filecontents}{data.dat}
x_v y_v
0 1
1 5
3 2
4 4
5 3
\end{filecontents}
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel={Xlabel},ylabel={Ylabel}]
	\addplot [color=blue,solid,mark=*] table[x=x_v,y=y_v] {data.dat};
\end{axis}
\draw(1,5)--(5,5)node[midway,above]{Beschriftung};  
%Diese Linie soll vom zweiten Punkt bis zum vierten Punkt gezeichnet werden
%Also sowas in der Art:
%\draw(Koordinate Punkt 2) -- (Koordinate Punkt 4);
\end{tikzpicture}
\end{document}
Vielen Dank,
Gruß Jens

Verfasst: Di 21. Feb 2017, 12:33
von Jens-Gast
Hallo,

nach meinen Recherchen ist das scheinbar doch nicht möglich. Ich habe es daher nun als statische Lösung innerhalb der axis-Umgebung gelöst.
\begin{filecontents}{data.dat}
x_v y_v
0 1
1 5
3 2
4 4
5 3
\end{filecontents}
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel={Xlabel},ylabel={Ylabel}]
   \addplot [color=blue,solid,mark=*] table[x=x_v,y=y_v] {data.dat};
   \draw(axis cs:1,5)--(axis cs:4,4)node[midway,above,sloped]{Beschriftung}; %Lösung
\end{axis} 
\end{tikzpicture}
\end{document}
Wenn jemand eine dynamische Lösung kennt würde ich mich freuen. Also eine Lösung, bei der man die Koordinatenpunkte nicht fest reinschreiben muss sondern ebenfalls aus der Datei holen kann.

Vielen Dank,
Gruß Jens

Verfasst: Di 21. Feb 2017, 12:47
von u_fischer
Natürlich geht es. nodes near coords kennt doch auch die Koordinaten.
\RequirePackage{filecontents}
\begin{filecontents}{data.dat}
x_v y_v
0 1
1 5
3 2
4 4
5 3
\end{filecontents}
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{
    name nodes near coords/.style={
        every node near coord/.append style={
            name=#1-\coordindex,
            alias=#1-last,
        },
    },
    name nodes near coords/.default=coordnode
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xlabel={Xlabel},ylabel={Ylabel}]
   \addplot [color=blue,solid,mark=*,nodes near coords,name nodes near coords=myname] table[x=x_v,y=y_v] {data.dat};
   
\end{axis}
\draw(myname-1)--(myname-3)node[midway,above]{Beschriftung};
%Diese Linie soll vom zweiten Punkt bis zum vierten Punkt gezeichnet werden
%Also sowas in der Art:
%\draw(Koordinate Punkt 2) -- (Koordinate Punkt 4);
\end{tikzpicture}
\end{document}

Verfasst: Mi 22. Feb 2017, 11:51
von Jens-Gast
Hallo,

vielen Dank! Nodes near coords kannte ich zuvor noch nicht und habe ich auch bei meinen Recherchen nicht gefunden, deshalb hab ich ja mal hier nachgefragt :wink:.

Diese Lösung hat aber noch einen Nachteil und zwar, dass die Linie nicht direkt von den Punkten ausgeht, sondern etwas darüber. Kann man dies ebenfalls noch erreichen?

Vielen Dank,
Gruß Jens

Verfasst: Mi 22. Feb 2017, 12:31
von u_fischer
\draw(myname-1.south)--(myname-3.south)node[midway,above]{Beschriftung};

Verfasst: Mi 22. Feb 2017, 13:03
von Jens-Gast
Hallo,

vielen Dank, funktioniert super.
Sorry, eine letzte Frage habe ich nich:
Gibt es noch die Möglichkeit, die Zahlen oberhalb der Punkte zu entfernen?

Gruß Jens

Verfasst: Mi 22. Feb 2017, 13:07
von u_fischer
Naja, du könntest ja auch mal in die Doku schauen. nodes near coords={} sollte gehen.

Verfasst: Mi 22. Feb 2017, 13:56
von Jens-Gast
Hallo,

vielen Dank das hat funktioniert. Bisher kam ich auch immer gut mit der Doku zurecht, aber gerade bei solchen Einstellungen ist es immer schwierig bei einer Dokumentation mit über 500 Seiten die passende Stelle zu finden.

Vielen Dank,
Gruß Jens

Verfasst: Mi 22. Feb 2017, 14:00
von Gast
Naja. Nachdem Ulrike das Stichwort bereits weiter oben geliefert hatte, ist die Suche danach in der Anleitung eigentlich nicht so wahnsinnig schwierig …