pgfplots (patch / table plot): Verwendung eines Ankers für 'nodes near coords' bei gekillter Mehrfachbeschriftung
`Anschlussfrage zu`
`https://texwelt.de/wissen/fragen/22892/pgfplots-patch-table-plot-mehrfache-beschriftung-bei-nodes-near-coords-durch-patch-table-with-point-meta`
___
Im o.g. Thread wird eine Mehrfachbennung von `nodes near coords` durch eine Schleifenmethode von @murmeltier verwendet.
Ich möchte hierbei die Koordinatentabelle um einen Anker für die Textposition erweitern.
% Koordinatentabelle
table[header=true, x index=1, y index=2, row sep=\\] {
Nr x y Testposition\\
0 0 0 south \\ % 0. Aliaspunkt. SOLL: south als Default
1 1 0 \\
2 0 1 north \\ % Ausnahme
3 1 1 \\
};
Leider wird dabei nur letzte angebene Anker verwendet `north`. Eigentlich sollen die `nodes near coords`
standardmäßig oberhalb der Punkte stehen, nur in angegeben Ausnahmefällen unterhalb.
[![alt text][1]][1]
\documentclass[margin=5mm, tikz]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{patchplots}
\pgfplotsset{compat=1.13}
% Methode festlegen, die Mehrfachplatzierung (je nach Pfadanzahl)
% von Punktbezeichnungen verhindert ============
\xdef\LstPN{0}
\newif\ifDupe
\pgfplotsset{avoid dupes/.code={\Dupefalse
\foreach \X in \LstPN
{\pgfmathtruncatemacro{\itest}{ifthenelse(\X==\punktnummer,1,0)
% Geht natürlich nicht
%\pgfmathtsetmacro{\Ankertest}{ifthenelse(\anker="north","north","south")
%\pgfmathsetmacro{\Ankertest}{ifthenelse(\anker="north","north","south")
}
\ifnum\itest=1
\global\Dupetrue
\breakforeach
\fi}
\ifDupe
% auskommentieren:
\typeout{\punktnummer\space ist\space ein\space Duplikat!}%
\xdef\punktnummer{} %macht mehrfache Nummern einfach unsichtbar
%\pgfkeysalso{/tikz/anchor=\anker} % geht auch nicht
\else
\xdef\LstPN{\LstPN,\punktnummer}
\fi}}
% ============
\begin{document}
\begin{tikzpicture}
\begin{axis}[hide axis]
\addplot+[
table/row sep=newline,
patch, % Plot-Typ
patch type=polygon,
vertex count=2, % damit nur Kanten, keine Flächen, gezeichnet werden
%
% Angabe der Verbindungskanten =====================
patch table with point meta={
Startpkt Endpkt colordata \\
%0 0 \\
1 1 \\
2 2 \\
3 3 \\% Bis hierhin ok....
1 3 \\% Ab hier wird überschrieben
1 2 \\
},
%
% Beschriftung
visualization depends on={value \thisrowno{0} \as \punktnummer},
visualization depends on={value \thisrowno{3} \as \anker},
every node near coord/.append style={
%anchor=\anker,
/pgfplots/avoid dupes,% Methode für Mehrfachplatzierung anwenden
},
nodes near coords={\punktnummer},
% Geht nicht
nodes near coords style={
anchor=\anker
},
]
% Koordinatentabelle
table[header=true, x index=1, y index=2, row sep=\\] {
Nr x y Testposition\\
0 0 0 south \\ % 0. Aliaspunkt. SOLL: south als Default
1 1 0 \\
2 0 1 north \\ % Ausnahme
3 1 1 \\
};
\end{axis}
\end{tikzpicture}
\end{document}
[1]: https://texwelt.de/wissen/upfiles/55555555_205.png