Quiero dibujar un mapa de polígonos 2D basado en datos proporcionados por otra fuente para facilitar el análisis de acciones en el mapa. Los datos tienen el siguiente 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']
...
El primer número es la ID de un nodo, la siguiente lista contiene las ID de sus vecinos. Como el número de vecinos de un nodo difiere, necesito dibujar un mapa poligonal.
Así que intenté usar los polígonos de Voronoi para la representación del mapa. El problema es: ¿cómo puedo determinar los puntos para satisfacer todas las relaciones de vecindario? Supongo que mi primer intento es más o menos un error en mi ciclo de prueba y error. Utilicé la herramienta sfdp de graphviz para obtener las posiciones de puntos del gráfico:
El uso de las posiciones de los puntos resultó en la siguiente representación del mapa:
El problema de este enfoque es que, por ejemplo, los nodos 4 y 1 son vecinos, pero en el diagrama de Voronoi no lo son debido a la posición de los nodos. Entonces para mí este enfoque falló.
En Google, encontré muchos tutoriales que generan mapas con polígonos o mosaicos, pero aún no he descubierto cómo puedo crear un mapa para mis datos dados. Supongo que hay un enfoque que usa (múltiples) hexágonos / triángulos / cuadrados o una mezcla para lograr lo que necesito, pero no sé qué buscaré.
¿Hay una palabra clave o un algoritmo que me pueda ayudar aquí?
Actualización / Resultado : Para completar: Este es mi resultado después de usar las sugerencias de la respuesta aceptada: