2013-04-09 14 views
5

So che esistono diverse versioni di Graphviz come libreria. Ma sono un po 'confuso su quale sia considerato corrente + raccomandato. Mi piacerebbe generare e visualizzare alcuni grafici da un'applicazione GUI linux.Quale API della libreria graphviz è consigliata per un progetto C++ che deve generare alcuni grafici?

Secondo http://www.graphviz.org/doc/libgraph/Agraph.pdf a pagina 22, Libgraph è stato sostituito da Cgraph. Ma il documento si chiama Agraph, che trovo strano.

Nella pagina 23, si dice anche che Lgraph è un successore di C++ per Cgraph, e dal momento che sto usando C++, mi piacerebbe saperne di più, ma non riesco a trovare Lgraph da nessuna parte.

Forse correlato, vedo che esiste una libreria Boost chiamata BGL che supporta l'importazione e l'esportazione di file graphviz. Alla ricerca di opinioni su se è preferibile utilizzare BGL su Graphviz direttamente o Lgraph.

Sembra su Ubuntu se I sudo apt-get install libgraphviz-dev ottengo Cgraph. In questo caso, questa domanda è per confermare che Cgraph è la libreria consigliata e per chiedere se sia Lgraph o BGL valgono la pena considerare.

+0

Il C api of cgraph (http://www.graphviz.org/doc/libguide/libguide.pdf) non sembra troppo male, è praticamente classicamente orientato agli oggetti tranne che nella domanda C. –

+0

. "Genera alcuni grafici" - cosa significa? Graphviz dispone di grafici che possono essere visualizzati in modo chiaro. BGL è un framework per l'elaborazione di grafici per rispondere a domande come quello che è il percorso più breve. Ma vuoi generare grafici ... da cosa? – ravenspoint

+0

@ravenspoint: ho dati interni che posso esportare come file .gv per esempio. Posso creare manualmente un mucchio di file .gv e quindi fare chiamate system() per chiedere punti per convertirli in grafici. Ma speravo invece di fare tutto con un'API Graphviz piuttosto che chiamare esternamente Graphviz. –

risposta

2

BGL non fornisce interfacce interattive a Graphviz; se è necessario, è necessario utilizzare una delle librerie native di Graphviz come cgraph. BGL può leggere ed emettere file in formato Graphviz, ma non sembra quello che stai cercando; ha anche alcuni algoritmi di layout, ma non sono sofisticati come quelli di Graphviz.

+0

La clausola "ma non sono sofisticati come quelli di Graphviz" è valida per Boost 1.59 (http://www.boost.org/doc/libs/1_59_0/libs/graph/doc/topology.html)? – AlwaysLearning