Je veux dessiner une carte polygonale 2D basée sur les données fournies par une autre source pour faciliter l'analyse des actions sur la carte. Les données ont le format suivant:
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']
...
Le premier nombre est l'ID d'un nœud, la liste suivante contient les ID de ses voisins. Comme le nombre de voisins d'un nœud diffère, j'ai besoin de dessiner une carte polygonale.
J'ai donc essayé d'utiliser des polygones de Voronoï pour la représentation cartographique. Le problème est: comment déterminer les points pour satisfaire toutes les relations de voisinage? Je suppose que mon premier essai est plus ou moins une erreur dans mon cycle d'essais et d'erreurs. J'ai utilisé l' outil sfdp de graphviz pour obtenir les positions des points du graphique:
L'utilisation des positions des points a donné la représentation cartographique suivante:
Le problème de cette approche est que, par exemple, les nœuds 4 et 1 sont voisins, mais dans le diagramme de Voronoï, ils ne le sont pas à cause de la position des nœuds. Donc pour moi, cette approche a échoué.
Google, j'ai trouvé beaucoup de tutoriels générant des cartes avec des polygones ou des tuiles mais je n'ai pas encore découvert comment je peux créer une carte pour mes données données. Je suppose qu'il existe une approche utilisant (plusieurs) hexagones / triangles / carrés ou un mélange pour atteindre ce dont j'ai besoin mais je ne sais pas ce que je vais chercher.
Y a-t-il un mot clé ou un algorithme qui peut m'aider ici?
Mise à jour / résultat : pour être complet: voici mon résultat après avoir utilisé les suggestions de la réponse acceptée: