Ho una matrice di adiacenza per il grafico. Devo rendere visibile questo grafico senza bordi intersecanti. Il vertice nel grafico può essere organizzato in modo casuale. Conosco una soluzione: enumerazione di tutti i bordi per le intersezioni. Se i bordi si intersecano, quindi riorganizzare il vertice, ma è troppo costoso per un numero elevato di vertici (più di 20). Qualche altra idea su come controllare i bordi intersecanti?Come disegnare il grafico con i bordi disgiunti?
5
A
risposta
1
È davvero facile visualizzare qualsiasi grafico in un piano 3D con spigoli disgiunti.
1) Posizionare tutti i vertici in qualsiasi punto del piano 3D in modo tale che non ci siano tre vertici allineati e non ci siano quattro vertici nello stesso piano.
2) Attraversare la matrice di adiacenza e tracciare una linea/curva per collegare i vertici.
In un piano 2D non è garantito l'esistenza di una soluzione. Ad esempio, si consideri lo scenario peggiore secondo cui ci sono circa 10 vertici e ogni vertice è connesso l'uno all'altro.
Problemi correlati
- 1. Disegno grafico con bordi ponderati
- 2. Come disegnare i bordi paralleli in Networkx/Graphviz
- 3. MPAndroidChart - Grafico a barre con bordi arrotondati
- 4. Come disegnare il grafico in Android?
- 5. Grafico boost: come copiare i nodi e i bordi di un grafico senza copiare le proprietà?
- 6. Ottieni graphviz per disegnare nodi sopra i bordi
- 7. Come disegnare torta come grafico in Android
- 8. Come posso colorare i bordi o disegnare correttamente i rec in un dendogramma R?
- 9. Come arrestare la finestra del dispositivo grafico tagliando i bordi del grafico()?
- 10. Disegnare grafici multilivello con networkx?
- 11. Come disegnare linee verticali sul grafico Highcharts?
- 12. Ridurre al minimo i bordi trasversali in un grafico
- 13. Matrice Gnuplot Matrice 2D con immagine, desidera disegnare i bordi per ogni cella
- 14. Come forzare i bordi neri per UIPopoverControllers
- 15. Analisi dei bordi nel grafico NetworkX
- 16. Networkx: Converti multigraph in semplice grafico con bordi ponderati
- 17. Disegnare un grafico di correlazione in matplotlib
- 18. Trovare il percorso più breve tra due nodi appartenenti a due sottoinsiemi disgiunti di un grafico
- 19. Come aggiungere etichette ai bordi nel grafico d3
- 20. Come disegnare un grafico in Android come l'app Wifi Analyzer?
- 21. Come disegnare il boxplot con un livello significativo?
- 22. Come mantenere solo i nodi in networkx-graph con 2+ bordi in uscita o 0 bordi in uscita?
- 23. Disegnare un semplice grafico su iPhone
- 24. Come aggiungere etichette per bordi in Graphviz?
- 25. mantenere i bordi in IE con jquery.corner()
- 26. Perché il mio grafico diretto alla forza d3 non visualizza i bordi?
- 27. Come disegnare una linea sul grafico chartSeries usando quantmod?
- 28. Api per disegnare grafico in Android
- 29. grafico a barre matplotlib nero - come rimuovere i bordi delle barre
- 30. come disegnare automi in java
Quello che stai cercando è un algoritmo di disegno grafico planare, come implementato da [boost] (http://www.boost.org/doc/libs/1_36_0/libs/graph/doc/planar_graphs.html). Ovviamente questo può funzionare solo se il grafico è effettivamente planare, che non hai specificato. –
[Here] (http://stackoverflow.com/questions/2751826/which-c-graph-library-should-i-use) 'è un elenco di librerie che eseguono layout grafici, che include anche boost. Se si desidera implementare il proprio, [qui] (http://www.csi.ucd.ie/staff/aquigley/home/downloads/aq-gd2000.pdf) è un algoritmo che esegue i grafici 2D. –