Das ist keine richtige Antwort, aber ein Erklärungsversuch, was bei Deinem Versuch schief läuft. (Und naja, in dem Beispiel ist das Ergebnis korrekt.)
**Was läuft schief?** Die Koordinaten werden in einem Loop über die *erste* Tabelle erzeugt. Zumindest macht Dein Code das so, und aus Gründen, die ich nicht 100% verstehe, willst Du das so. Ansonsten gäbe es ja das Problem der Duplikate nicht. Bitte korrigiere mich, wenn das nicht stimmt: Du willst im Prinzip in der zweiten Tabelle einen riesigen Datensatz hinterlegen, aber nur die Koordinaten markieren, die auch wirklich in irgendwelche patches eingebaut sind, oder? (Ansonsten könnten wir uns den ganzen Zauber sparen, indem wir die `nodes near coords` einfach in einem Loop über die zweite Tabelle generieren. Dazu später etwas mehr.)
**Wo ist das Problem?** Aus irgendwelchen Gründen, die ich nicht verstehe, wird, wenn pgfplots die Daten aus der zweiten Tabelle ausliest, die Information über den Anker schlicht ignoriert. M.a.W. die zur Punktnummer gehörigen Koordinaten werden ausgelesen/aktualisiert, nicht aber der Anker. Das wird mit dem ersten typeout für neue Koordinaten gezeigt. Der untige Code gibt die typeouts
1 ist neu mit urprgl. Anker=north
1 ist neu mit Anker=north
1 ist ein Duplikat!
2 ist neu mit urprgl. Anker=north
2 ist neu mit Anker=south
2 ist ein Duplikat!
3 ist neu mit urprgl. Anker=north
3 ist neu mit Anker=south
3 ist ein Duplikat!
1 ist ein Duplikat!
1 ist ein Duplikat!
1 ist ein Duplikat!
1 ist ein Duplikat!
Wie Du siehst, variiert die Punkntnummer, nicht aber der *ursprüngliche* Anker. Und das, obwohl beide mit `visualization depends on` ausgelesen werden. (Dass wir beide völligen Unsinn machen, halte ich für unwahrscheinlich, weil ja ein Anker "north" ausgelesen wird.)
**Wie kommt man hier weiter?** Ich habe einfach eine Liste ` \LstExcept` eingeführt, in der die Punktnummern gelistet sind, bei denen der Anker anders gesetzt werden soll. D.h., wenn Du einen riesigen Datensatz hast, aber nur ein paar Ausnahmen, dann ist diese Methode effizient. Du kannst Dir dann die Spalte "Textposition" sparen.
Hier ist der Code:
\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
%\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/opacity=0} % geht auch nicht
\else
\xdef\LstPN{\LstPN,\punktnummer}
\typeout{\punktnummer\space ist\space neu\space mit\space urprgl.\space Anker=\anker}
\foreach \X in \LstExcept
{\ifnum\X=\punktnummer
\pgfkeysalso{/tikz/anchor=-90}
\xdef\anker{south}
\fi}
%\pgfmathsetmacro{\anker}{\LstAnker[\punktnummer]}
\typeout{\punktnummer\space ist\space neu\space mit\space Anker=\anker}
\fi}}
% ============
\begin{document}
\xdef\LstExcept{2,3}
\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 south \\
2 0 1 north \\ % Ausnahme
3 1 1 \\
};
\end{axis}
\end{tikzpicture}
\end{document}
[![alt text][1]][1]
text][1]][2]
**KOMMENTAR**: Falls es irgendwie so sein sollte, dass man die Spalte Positionierung nicht wirklich auslesen kann, kannst Du evtl. `\LstPN` recyceln. Die beinhaltet ja alle tatsächlich verwendeten Punkte. D.h. Du kannst Dir die ganzen `nodes near coords` hier sparen und dann in einem zweiten Schritt über die die Liste loopen und die Nodes setzen. (Und ich kann mir einen weiteren Kommentar nicht ganz verkneifen. Wer immer die Frage gedownvoted hat: ich denke nicht, dass das ganz OK ist, m.E. wird hier ein merkwürdiges Verhalten von pgfplots aufgezeigt.)
**ADDENDUM**: Ich kann die Spalte "Textposition" problemlos entfernen. Dieser Code ist etwas flexibler.
\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
%\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/opacity=0} % geht auch nicht
\else
\xdef\anker{north}
\xdef\LstPN{\LstPN,\punktnummer}
\foreach \X/\neueranker in \LstExcept
{\typeout{\X/\neueranker}
\ifnum\X=\punktnummer
\xdef\anker{\neueranker}
\fi}
%\pgfmathsetmacro{\anker}{\LstAnker[\punktnummer]}
\typeout{\punktnummer\space ist\space neu\space mit\space Anker=\anker}
\pgfkeysalso{/tikz/anchor=\anker}
\fi}}
% ============
\begin{document}
\xdef\LstExcept{{2/-90},{3/0}}
\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},
every node near coord/.append style={
/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 \\
0 0 0 \\ % 0. Aliaspunkt. SOLL: south als Default
1 1 0 \\
2 0 1 \\ % Ausnahme
3 1 1 \\
};
\end{axis}
\end{tikzpicture}
\end{document}
[![alt text][3]][3]
[1]: https://texwelt.de/wissen/upfiles/Screen_Shot_2018-09-18_at_5.52.01_PM.pnghttps://texwelt.de/wissen/upfiles/Screen_Shot_2018-09-18_at_5.52.01_PM.png
[2]: https://texwelt.de/wissen/upfiles/Screen_Shot_2018-09-18_at_5.52.01_PM.png
[3]: https://texwelt.de/wissen/upfiles/Screen_Shot_2018-09-19_at_10.34.52_AM.png