Die Frage ist zum Archivieren gedacht, kein Support benötigt. Ich beantworte die Frage auch selbst.

Antworten im Sinne von Verbesserungs- und Vereinfachungsvorschlägen sind sind jedoch sehr willkommen!


alt text

Die Abbildungen zeigen sogen. Streichholzgraphen.

Hierbei gibt es drei Herausforderungen:

  1. Die Platzierung der Punkte (hier als vorhandener externer Datensatz angenommen)
  2. Die Angabe der Verbindungskanten
  3. Die geeignete Platzierung der Beschriftungen (keine Überlappungen o.ä.)

gefragt 29 Aug, 14:20

cis's gravatar image

cis
7.9k15162257
Akzeptiert: 71%

bearbeitet 29 Aug, 14:30


Die folgende Lösung mit \usepgfplotslibrary{patchplots} genügt den drei Ansprüchen

Öffne in Overleaf
 1. Die Platzierung der Punkte (hier als vorhandener externer Datensatz angenommen)
 2. Die Angabe der Verbindungskanten
 3. Die geeignete Platzierung der Beschriftungen (keine Überlappungen o.ä.)

hat aber den Nachteil, dass die Koordinatentabelle

Öffne in Overleaf
Nr  x     y     Textposition \\
0  0    0       south         \\% Default
1 -1.23 4.58                  \\
2 -2.01 3.95                  \\
3 -1.07 3.59    north        \\% Änderung
4 -1.85 2.96    south         \\% Default wiederholen
5 -2.78 3.32                  \\
....

zweimal angegeben werden muss: einmal für die Koordinatenpunkte, einmal für die Beschriftungen.

Das ist nicht unbedingt elegant, aber wird bereits im Handbuchbeispiel für 'patch plots polygon' so gemacht, daher schätze ich, dass es zur Zeit keine kürzere Lösung gibt (pgfplots 1.16, letztes Beispiel vor Abschnitt 5.9.2).

(Überdies erlaubt pgfplots hier zur Zeit scheints nur inlinetables.)

Ansonsten können im patch-Plot die Verbindungen bequem in der Form

Öffne in Overleaf
patch table with point meta={%
Startpkt Endpkt colordata \\%colordata weglassen, dann vermutl. autom. 0
1 1    \\
2 1    \\
3 1    \\
3 2    \\
4 3    \\
...
...
}

eingegeben werden.

Vollständiges MWE:

alt text

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[margin=5mm, tikz]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{patchplots}
\pgfplotsset{compat=1.13}

\begin{document}

% Allgemeine Angaben
\pgfplotsset{
x=15mm, y=15mm,  % Maßstab
% Oder Bildmaße
% width=20cm,
% height=5cm,
}

\begin{tikzpicture}
\begin{axis}[hide axis, 
colormap={Kantenfarbe}{color=(gray) color=(gray)},
]
\addplot+[
% Punkte
mark size=1.125pt, mark options={red}, 
% Kanten
thick, 
% Beschriftung --> hier nicht möglich 
%nodes near coords=\coordindex, % TUT -hier- NICHT!
table/row sep=\\, % Muss wohl so sein!?
%
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 \\%colordata weglassen, dann vermutl. autom. 0
1 1    \\
2 1    \\
3 1    \\
3 2    \\
4 3    \\
4 2    \\
4 43    \\
5 4    \\
5 2    \\
5 37    \\
6 1    \\
7 1    \\
7 6    \\
8 7    \\
8 6    \\
9 7    \\
9 8    \\
10 9    \\
10 8    \\
11 9    \\
11 10    \\
12 11    \\
13 11    \\
13 12    \\
14 13    \\
14 12    \\
15 13    \\
15 14    \\ 
16 15    \\
17 15    \\
17 16    \\
18 17    \\
18 16    \\
19 17    \\
19 18    \\
20 19    \\
21 19    \\
21 20    \\
22 21    \\
22 20    \\
23 21    \\
23 22    \\
24 23    \\
25 23    \\
25 24    \\
26 25    \\
26 24    \\
27 25    \\
27 26    \\
28 27    \\
28 26    \\
29 27    \\
29 28    \\
29 31    \\
30 31    \\
30 29    \\
31 33    \\
32 33    \\
32 31    \\
32 30    \\
33 33    \\
34 35    \\
34 33    \\
34 36    \\
35 33    \\
36 37    \\
36 35    \\
36 38    \\
37 35    \\
38 5    \\ 
38 37    \\
39 32    \\
39 30    \\ 
40 34    \\
40 39    \\
41 39    \\
41 28    \\
42 41    \\
42 24    \\
42 22    \\
43 38    \\
43 40    \\
44 41    \\
44 42    \\
44 49    \\
44 51    \\
45 6    \\
45 3    \\
46 14    \\
46 12    \\
46 48    \\
47 18    \\
47 16    \\
48 10    \\
48 45    \\
48 50    \\
49 45    \\
49 43    \\
49 40    \\
50 47    \\
50 46    \\
50 51    \\
51 20    \\
51 47    \\
}
% Angabe der Verbindungskanten =====================
]
table[header=true, x index=1, y index=2, row sep=\\] {
Nr  x     y        Textposition \\
0  0    0           south       \\
1 -1.23 4.58                  \\
2 -2.01 3.95               \\
3 -1.07 3.59    north     \\
4 -1.85 2.96    south         \\
5 -2.78 3.32             \\
6 -0.97 3.62             \\
7 -0.27 4.32             \\
8 -0.01 3.36             \\
9 0.70 4.06             \\
10 0.96 3.10             \\
11 1.67 3.81             \\
12 1.34 2.86             \\
13 2.32 3.05             \\
14 1.99 2.10             \\
15 2.97 2.29             \\
16 2.04 1.93   north          \\
17 2.81 1.30   south          \\
18 1.88 0.95             \\
19 2.66 0.31             \\
20 1.66 0.43             \\
21 2.06 -0.49             \\
22 1.06 -0.37             \\
23 1.46 -1.29             \\
24 0.96 -0.42    north     \\
25 0.46 -1.28    south     \\
26 -0.04 -0.41             \\
27 -0.54 -1.28             \\
28 -1.04 -0.41   north        \\
29 -1.54 -1.27   south          \\
30 -1.16 -0.35             \\
31 -2.15 -0.48             \\
32 -1.77 0.44             \\
33 -2.76 0.32             \\
34 -1.90 0.82             \\
35 -2.77 1.32             \\
36 -1.90 1.82             \\
37 -2.77 2.32             \\
38 -1.91 2.82   north        \\
39 -0.77 0.57   south          \\
40 -1.16 1.50             \\
41 -0.08 -0.14             \\
42 0.66 0.54    north         \\
43 -0.97 2.48   south          \\
44 -0.30 0.83             \\
45 -0.81 2.63             \\
46 1.01 1.92             \\
47 1.10 1.58             \\
48 0.18 2.48             \\
49 -0.21 1.83             \\
50 0.11 1.48             \\
51 0.69 0.67             \\
};

% Beschriftungen  ============================
% Laut Handbuch   "replicate the vertex list to show \coordindex"

% Anzeigen des 0. Aliaspunktes verhindern:
\newcommand\Punktnummer{\pgfmathparse{\punktnummer>0 ? \punktnummer : ""}\pgfmathresult}

\addplot[
only marks,
visualization depends on={value \thisrowno{0} \as \punktnummer},
visualization depends on={value \thisrowno{3} \as \Anker},
nodes near coords={\Punktnummer},
%
every node near coord/.append style={
font=\scriptsize,   %\sffamily
text=black,
anchor=\Anker
},
] table[header=true, x index=1, y index=2, row sep=\\] {
Nr  x     y        Textposition \\
0  0    0           south       \\
1 -1.23 4.58                  \\
2 -2.01 3.95               \\
3 -1.07 3.59    north     \\
4 -1.85 2.96    south         \\
5 -2.78 3.32             \\
6 -0.97 3.62             \\
7 -0.27 4.32             \\
8 -0.01 3.36             \\
9 0.70 4.06             \\
10 0.96 3.10             \\
11 1.67 3.81             \\
12 1.34 2.86             \\
13 2.32 3.05             \\
14 1.99 2.10             \\
15 2.97 2.29             \\
16 2.04 1.93   north          \\
17 2.81 1.30   south          \\
18 1.88 0.95             \\
19 2.66 0.31             \\
20 1.66 0.43             \\
21 2.06 -0.49             \\
22 1.06 -0.37             \\
23 1.46 -1.29             \\
24 0.96 -0.42    north     \\
25 0.46 -1.28    south     \\
26 -0.04 -0.41             \\
27 -0.54 -1.28             \\
28 -1.04 -0.41   north        \\
29 -1.54 -1.27   south          \\
30 -1.16 -0.35             \\
31 -2.15 -0.48             \\
32 -1.77 0.44             \\
33 -2.76 0.32             \\
34 -1.90 0.82             \\
35 -2.77 1.32             \\
36 -1.90 1.82             \\
37 -2.77 2.32             \\
38 -1.91 2.82   north        \\
39 -0.77 0.57   south          \\
40 -1.16 1.50             \\
41 -0.08 -0.14             \\
42 0.66 0.54    north         \\
43 -0.97 2.48   south          \\
44 -0.30 0.83             \\
45 -0.81 2.63             \\
46 1.01 1.92             \\
47 1.10 1.58             \\
48 0.18 2.48             \\
49 -0.21 1.83             \\
50 0.11 1.48             \\
51 0.69 0.67             \\
};
% Beschriftungen  ============================

\end{axis}
\end{tikzpicture}

\end{document}
Permanenter link

beantwortet 29 Aug, 14:20

cis's gravatar image

cis
7.9k15162257

bearbeitet 30 Aug, 05:38

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×257
×118
×67
×8

Frage gestellt: 29 Aug, 14:20

Frage wurde angeschaut: 170 Mal

Zuletzt aktualisiert: 30 Aug, 05:38