Ich möchte eine 2D-Polygonkarte basierend auf Daten zeichnen, die von einer anderen Quelle bereitgestellt wurden, um die Analyse von Aktionen auf der Karte zu vereinfachen. Die Daten haben das folgende Format:
1 ['2', '4', '5', '7', '17', '10']
2 ['1', '3', '4']
3 ['2', '11', '4']
4 ['1', '2', '3', '11', '13', '18', '5']
5 ['1', '4', '18', '17']
6 ['7', '8']
...
Die erste Nummer ist die ID eines Knotens. Die folgende Liste enthält die IDs seiner Nachbarn. Da sich die Anzahl der Nachbarn eines Knotens unterscheidet, muss ich eine Polygonkarte zeichnen.
Also habe ich versucht, Voronoi- Polygone für die Kartendarstellung zu verwenden. Das Problem ist: Wie kann ich die Punkte bestimmen, um alle Nachbarschaftsbeziehungen zu erfüllen? Ich denke, mein erster Versuch ist mehr oder weniger ein Fehler in meinem Versuchs- und Fehlerzyklus. Ich habe das sfdp- Tool von graphviz verwendet , um die Punktpositionen des Graphen zu ermitteln:
Die Verwendung der Positionen der Punkte ergab die folgende Kartendarstellung:
Das Problem dieses Ansatzes besteht darin, dass beispielsweise die Knoten 4 und 1 Nachbarn sind, im Voronoi-Diagramm jedoch nicht aufgrund der Position der Knoten. Für mich ist dieser Ansatz also gescheitert.
Beim Googeln habe ich viele Tutorials gefunden, in denen Karten mit Polygonen oder Kacheln erstellt wurden, aber ich habe noch nicht herausgefunden, wie ich eine Karte für meine angegebenen Daten erstellen kann. Ich denke, es gibt einen Ansatz, bei dem (mehrere) Sechsecke / Dreiecke / Quadrate oder eine Mischung verwendet werden, um das zu erreichen, was ich brauche, aber ich weiß nicht, wonach ich suchen soll.
Gibt es ein Schlüsselwort oder einen Algorithmus, der mir hier helfen kann?
Update / Ergebnis : Der Vollständigkeit halber : Dies ist mein Ergebnis, nachdem ich die Vorschläge der akzeptierten Antwort verwendet habe: