有向グラフを表すデータ構造があり、それをHTMLページに動的にレンダリングしたいと思います。これらのグラフは通常、ほんの数ノードであり、おそらく最上部では10ノードであるため、パフォーマンスはそれほど重要ではないと思います。理想的には、ユーザーがノードをドラッグして手動でレイアウトを微調整できるように、jQueryにフックできるようにしたいと思います。
注:チャートライブラリは探していません。
有向グラフを表すデータ構造があり、それをHTMLページに動的にレンダリングしたいと思います。これらのグラフは通常、ほんの数ノードであり、おそらく最上部では10ノードであるため、パフォーマンスはそれほど重要ではないと思います。理想的には、ユーザーがノードをドラッグして手動でレイアウトを微調整できるように、jQueryにフックできるようにしたいと思います。
注:チャートライブラリは探していません。
あなたが探しているかもしれないものをまとめました:http://www.graphdracula.net
これは、有向グラフ レイアウト、SVG を備えた JavaScript であり、ノードをドラッグすることもできます。まだ微調整が必要ですが、全然使えます。次のような JavaScript コードを使用して、ノードとエッジを簡単に作成できます。
var g = new Graph();
g.addEdge("strawberry", "cherry");
g.addEdge("cherry", "apple");
g.addEdge("id34", "cherry");
前述の Raphael JS ライブラリ (graffle の例) と、ネットで見つけたフォース ベースのグラフ レイアウト アルゴリズムのコード (すべてオープン ソース、MIT ライセンス) を使用しました。ご意見や特定の機能が必要な場合は、実装するかもしれません。
他のプロジェクトもご覧になることをお勧めします。以下は、2 つのメタ比較です。
SocialCompareにはライブラリの広範なリストがあり、「ノード / エッジ グラフ」行はグラフ視覚化のものをフィルタリングします。
DataVisualization.ch は、ノード/グラフのものを含む多くのライブラリを評価しました。残念ながら、直接リンクがないため、「グラフ」でフィルタリングする必要があります。
同様のプロジェクトのリストを次に示します (一部は既にここで言及されています)。
vis.jsは、多くの種類のネットワーク/エッジ グラフに加えて、タイムラインと 2D/3D グラフをサポートしています。自動レイアウト、自動クラスタリング、弾力性のある物理エンジン、モバイル対応、キーボード ナビゲーション、階層レイアウト、アニメーションなど。MIT のライセンスを受け、自己組織化ネットワークの研究を専門とするオランダの会社によって開発されました。
Cytoscape.js - モバイル サポートによるインタラクティブなグラフ分析と視覚化。jQuery 規則に従います。NIH の助成金によって資金提供され、いくつかの大学や他の組織の支援を受けて@maxkfranzによって開発されました(以下の彼の回答を参照してください)。
JavaScript InfoVis ツールキット- Jit は、インタラクティブな多目的グラフ描画およびレイアウト フレームワークです。たとえば、双曲線ツリーを参照してください。Twitter dataviz アーキテクトのNicolas Garcia Belmonteによって構築され、2010 年に Sencha に買収されました。
D3.js Protovis の後継である強力な多目的 JS 視覚化ライブラリ。力指向グラフの例、およびギャラリーの他のグラフの例を参照してください。
Plotly のJS 視覚化ライブラリは、JS、Python、R、および MATLAB バインディングで D3.js を使用します。IPython での nexworkx の例はこちら、ヒューマン インタラクションの例はこちら、JS Embed APIを参照してください。
sigma.jsグラフを描画するための軽量だが強力なライブラリ
インタラクティブな接続グラフを作成するためのjsPlumb jQuery プラグイン
Springy - 力指向のグラフ レイアウト アルゴリズム
John ResigによるProcessingライブラリのProcessing.js Javascriptポート
JS Graph It - 直線で結ばれたボックスをドラッグ アンド ドロップします。線の自動レイアウトを最小限に抑えます。
RaphaelJS の Graffle - 汎用の多目的ベクトル描画ライブラリのインタラクティブなグラフの例。RaphaelJS はノードを自動的にレイアウトできません。そのためには別のライブラリが必要です。
JointJS Core - David Durman の MPL ライセンスのオープン ソース ダイアグラム ライブラリ. 静的ダイアグラムまたは完全にインタラクティブなダイアグラム ツールとアプリケーション ビルダーのいずれかを作成するために使用できます。SVG をサポートするブラウザーで動作します。コア パッケージに含まれていないレイアウト アルゴリズム
mxGraph以前は商用の HTML 5 作図ライブラリでしたが、Apache v2.0 で利用できるようになりました。mxGraph はdraw.ioで使用されるベース ライブラリです。
GoJS Interactive グラフ描画およびレイアウト ライブラリ
HTML商用グラフ描画およびレイアウトライブラリ用のyFiles
KeyLines商用 JS ネットワーク可視化ツールキット
ZoomCharts商用の多目的視覚化ライブラリ
Syncfusion JavaScript ダイアグラム描画と視覚化のための商用ダイアグラム ライブラリ。
Cytoscape Web Embeddable JS Network ビューアー (新機能の予定はありません。Cytoscape.js に引き継がれています)
arbor.js素晴らしい物理学と目を楽しませる洗練されたグラフ。2012 年 5 月に放棄されました。いくつかの半整備されたフォークが存在します。
jssvggraph「SVG オブジェクトを使用する Javascript ライブラリとして実装された、可能な限り単純な強制有向グラフ レイアウト アルゴリズム」. 2012年に放棄されました。
jsdotクライアント側グラフ描画アプリ。2011 年 に 廃車。
視覚化のためのProtovisグラフィカル ツールキット (JavaScript)。d3 に置き換えられます。
JSViz 2007 時代のグラフ視覚化スクリプト
dagre JavaScript のグラフ レイアウト
Graphviz洗練されたグラフ視覚化言語
Flare美しくパワフルな Flash ベースのグラフ描画
NodeBox Python グラフの視覚化
商業的なシナリオでは、真剣な競争相手は確かにHTML用のyFilesです。
それは提供します:
要求された機能のほとんどを示すサンプルレンダリングを次に示します。
完全な開示:私はyWorksで働いていますが、Stackoverflowでは雇用主を代表していません。
guruz が述べたように、JITには魅力的な RGraph や HyperTree の視覚化を含む、素敵なグラフ/ツリー レイアウトがいくつかあります。
また、最新のブラウザーで表示される小さなグラフには十分に機能するはずの、非常にシンプルな SVG ベースの実装 (依存関係なし、LOC が 125 以下) を githubに用意しました。