繰り返し発生する質問は、「言語Xに適したネットワークグラフライブラリとは何ですか」ということに気づきました。私はかなりの数の図書館で遊んだことがあり、私の経験をあなたと共有することができます。
Python: NetworkX は、視覚化機能が組み込まれているだけでなく、 Graphviz using pyGraphviz 。 (pyGraphvizとNetworkXは同じ作者によって書かれています)。 NetworkXはオープンソースであり、非常に使いやすいです。
Perl: Circos は、ゲノムやその他の非常に複雑なデータセットを視覚化するために開発されました。常に円形のレイアウトを使用しますが、ネットワークが非常に大きく、その「モジュール性」スコアが低い場合は、多くの場合、最も適切なレイアウトです。 Circosはオープンソースです。
。Net: NodeXL はMicrosoft Researchによって開発されており、Excelのアドオンであると同時に.Net3.5ライブラリ。これは(Microsoftの標準に対して)かなりオープンであり、視覚化にFruchterman-Reingoldアルゴリズムを使用しています。
Java: JUNG2 が最近リリースされ、堅牢なライブラリでもあります。拡張された視覚化と主要なメトリックのサポートがあります。 JUNG2はオープンソースです。
UbiGraph: UbiGraph には、Python(Python $ ===( NetworkXはUbiGraphをサポートしています)、Ruby、PHP、Java、C、C++、C#、Haskell、OCaml。XML-RPCサーバーを使用したネットワークグラフの非常に優れた3D視覚化を備えています。基本バージョンは無料です。プロフェッショナルバージョンの場合。
スタンドアロン:次のような既製のパッケージをいつでも使用できます: Graphviz (Win、 Linux、OSX)、 Pajek (Win)、 [〜#〜] ucinet [〜#〜] (Win)、またはVisio(Win)ですら。
もっとたくさんのパッケージがあると思いますが、これらは私が自分で使ったものです。他にどのようなライブラリまたはパッケージが利用できますか?
graph-tool をpythonリストに追加する必要があります。これは非常に完全で、Boost GraphLibraryを使用してC++で実装されているため、桁数が大きくなります。 NetworkXなどのPythonのみの代替手段よりも高速です。
免責事項:私はgraph-toolの作者です。 :-)
Stanford Network Analysis Project (SNAP)はC++で記述され、大規模なデータセットを分析するためにパフォーマンスを念頭に置いて設計されました。プロジェクトはPythonライブラリで拡張されており、包括的なドキュメントがあります。
このプロジェクトは、さまざまなドメインの 経験的データセット に適したリソースであることにも注意してください。
Clojureの場合、 loom があります。そのWIPがよさそうだ。
Javaでは、prefuseは群を抜いて最高のグラフ描画パッケージです。非常に高速な力指向のレイアウトアルゴリズムを備えており、パラメーターをリアルタイムで微調整し、ノードをドラッグしてグラフを希望どおりに表示できるため、どのグラフよりもはるかに大きなグラフを探索して配置できます。非対話型システム。
これを試してみてください デモアプレット そしてあなたもそれに恋をするでしょう...
yFiles は、さまざまな自動洗練されたレイアウトスタイルを幅広く提供するレイアウトアルゴリズムのスイートです。これは商用製品であり、Javascript、Java、C#などのいくつかの一般的なプラットフォームと言語で利用できます。
利用可能なアルゴリズムの多くを示すインタラクティブなオンラインデモ があり、ライブラリは無料で評価できます。
免責事項:私はこれらのライブラリを作成する会社で働いていますが、SO私は雇用主を代表していません。この推奨事項は私自身の意見に基づいています。私は、さまざまなレイアウトスイートの実装を見てきました。過去15年間で上記の言語を使用しており、これほど完全で拡張可能な他の実装は利用できません。