Voglio disegnare una mappa poligonale 2d basata sui dati forniti da un'altra fonte per facilitare l'analisi delle azioni sulla mappa. I dati hanno il seguente formato:
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']
...
Il primo numero è l'ID di un nodo, il seguente elenco contiene gli ID dei suoi vicini. Poiché il numero di vicini di un nodo differisce, devo disegnare una mappa poligonale.
Quindi ho provato a usare i poligoni Voronoi per la rappresentazione della mappa. Il problema è: come posso determinare i punti per soddisfare tutte le relazioni di vicinato? Immagino che il mio primo tentativo sia più o meno un errore nel mio ciclo di prova ed errore. Ho usato lo strumento sfdp di graphviz per ottenere le posizioni dei punti del grafico:
L'uso delle posizioni dei punti ha comportato la seguente rappresentazione della mappa:
Il problema di questo approccio è che ad esempio i nodi 4 e 1 sono vicini ma nel diagramma Voronoi non sono dovuti alla posizione dei nodi. Quindi per me questo approccio è fallito.
Cercando su Google, ho trovato molti tutorial che generano mappe con poligoni o tessere, ma non ho ancora scoperto come posso creare una mappa per i miei dati. Immagino che ci sia un approccio che utilizza (più) esagoni / triangoli / quadrati o una miscela per ottenere ciò di cui ho bisogno, ma non so cosa cercherò.
C'è una parola chiave o un algoritmo che mi può aiutare qui?
Aggiornamento / risultato : per completezza: questo è il mio risultato dopo aver utilizzato i suggerimenti della risposta accettata: