Koordinaten außerhalb der axis-Umgebung von pgfplot abfragen Thema ist als GELÖST markiert

Tabellen und Grafiken erstellen und anordnen


Jens-Gast

Koordinaten außerhalb der axis-Umgebung von pgfplot abfragen

Beitrag 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

Jens-Gast

Beitrag 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

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

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

Jens-Gast

Beitrag 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

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

\draw(myname-1.south)--(myname-3.south)node[midway,above]{Beschriftung};

Jens-Gast

Beitrag 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

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Naja, du könntest ja auch mal in die Doku schauen. nodes near coords={} sollte gehen.

Jens-Gast

Beitrag 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

Gast

Beitrag von Gast »

Naja. Nachdem Ulrike das Stichwort bereits weiter oben geliefert hatte, ist die Suche danach in der Anleitung eigentlich nicht so wahnsinnig schwierig …

Antworten