web-dev-qa-db-ja.com

WPFで簡単にグラフを描く方法は?

有限状態マシンを表すグラフを描く必要があります。 Graph# を使用しようとしました。クールですが、いくつかのものが欠けています。ドキュメントがなく、使用が非常に難しくなります。カスタムWPFコントロールを使用してループ(頂点からそれ自体へのエッジ)を描画できず、エッジのラベル付けも実装されていません。 WPFでグラフを描画するアドバイスされた他のライブラリがありますか?

必要な機能:

  • エッジラベリング
  • ループ(循環)エッジ
  • 頂点ラベリング
  • 頂点の周りに単一/二重の円を描く-頂点は、ラベルが内側にある円(または二重の円)として表されるべきです

何か案は?


編集:

いくつかの提案がありましたが、感謝しています。しかし、私は自分の考えを明確にしていないと思います。この種のグラフが必要です。

http://static.max99x.com/school/automata-editor1.png.

これまでに提案されたすべてのツールはこれに適していないか、この状況でそれらを適用する方法がわからないかもしれません。

25
pmichna

Graphviz + GraphViz C#Wrapper はまさに私が探していたものです。

7
pmichna

オプション1:Microsoft自動グラフレイアウト

無料

http://research.Microsoft.com/en-us/projects/msagl/

GitHub

https://github.com/Microsoft/automatic-graph-layout.git

Winforms >> WPF

WinFormsですが、数行のコードでWPFにインポートできます。

Microsoft自動グラフレイアウトを使用したノードとエッジの視覚化

http://www.codeguru.com/csharp/.net/net_wpf/article.php/c16963/Visualizing-Nodes-and-Edges-with-Microsoft-Automatic-Graph-Layout。 htm

http://research.Microsoft.com/en-us/projects/msagl/#Layouts

FAQ

http://research.Microsoft.com/en-us/projects/msagl/faq.aspx

オプション2:QuickGraph-Graphvizサポート付きの100%C#グラフライブラリ

無料

http://quickgraph.codeplex.com/

このライブラリは100%C#です。 「Graphviz Support」という行に惑わされないでください。これは、C#コードを使用してGraphvizから出力をインポートすることを意味します。 C++コードが見えない。

http://www.codeproject.com/Articles/5603/QuickGraph-A-C-graph-library-with-Graphviz-Sup

NuGetパッケージがあります。

2003年から2011年まで開発中(8年!!)。

オプション3:GraphSharp

無料

http://graphsharp.codeplex.com/

  • QuickGraph(100%C#)に依存します。
  • Async/awaitをサポートします(いいね!)。

デモ

https://sachabarbs.wordpress.com/2010/08/31/pretty-cool-graphs-in-wpf/

ノート

これは非常にうまく機能し、数時間で稼働しました。また、DataTemplatesをサポートしているため、各ノードに必要なルックアンドフィールを設定できます。

オプション4:Graphviz4net

無料

http://graphviz4net.codeplex.com/

オプション5:GoDiagram

$$$

http://www.nwoods.com/products/godiagram/index.html

オプション6:WPFのグラフツリー描画コントロール

無料

http://www.codeproject.com/Articles/29518/A-Graph-Tree-Drawing-Control-for-WPF

適切ではありません。ツリーレイアウトです。

オプション7:WPFを使用して、循環依存関係を持つグラフを視覚化する

無料

http://www.codeproject.com/Articles/43776/Using-WPF-to-Visualize-a-Graph-with-Circular-Depen

オプション8:GraphViz

無料

http://www.graphviz.org/Download..php

これはC#ではなく、非マネージコードを使用します。ただし、C#ラッパーがあります。

AT&Tによってオープンソース化された「AT&T Researchers —サービスの背後にある科学の発明」および「研究ホーム>ポートフォリオ>ソフトウェアツール」を参照してください: http://www.research.att.com/software_tools ?fbid = NEk8_gxLLEc

ソース

http://www.graphviz.org/Download_source.php

また、オープンソースのRserve!

オプション9:Shields.GraphViz

無料

GraphVizのラッパー。

https://github.com/timothy-shields/graphviz

オプション10:NetworkView:ネットワーク、グラフ、フローチャートを視覚化および編集するためのWPFカスタムコントロール

無料

http://www.codeproject.com/Articles/182683/NetworkView-A-WPF-custom-control-for-visualizing-a

このライブラリを使用すると、ユーザーはノード間の接続を作成できますが、これはおそらく少しやり過ぎです。

https://channel9.msdn.com/coding4fun/blog/Noodling-Network-Nodes-Diagraming-with-the-NetworkView-custom-WPF-control

それはすべてMVVMです。

オプション11:Gephi-Open Graph Vizプラットフォーム

無料

http://gephi.github.io/ を参照してください

WPFグラフライブラリではありませんが、実際にニースグラフがどのように見えるかを示す優れた例を提供します。チュートリアルは素晴らしいです。

オプション12:Telerik

$$$

http://www.telerik.com/products/wpf/diagrams.aspx

オプション13:Infragistics

$$$

http://www.infragistics.com/samples/wpf/network-node/overviewhttp:// www.infragistics.com/samples/wpf/network-node/relationship-between-nodeshttp://www.infragistics.com/samples/wpf/network-node/custom-node-style

オプション14:WPFダイアグラムデザイナー

無料

それほど多くのグラフ作成ツールではありませんが、キャンバス上の任意のタイプのオブジェクトを移動、サイズ変更、回転する方法を示しています。

http://www.codeproject.com/Articles/22952/WPF-Diagram-Designer-Part-1

オプション15:MVVM Diagram Designer

無料

そして、誰かがこれをMVVMで再実装しました。それほど多くのグラフ作成ツールではありませんが、キャンバス上のあらゆるタイプのオブジェクトを移動、サイズ変更、回転する方法を示しています。

http://www.codeproject.com/Articles/484616/MVVM-Diagram-Designer

オプション16:yWorks-ダイアグラム作成会社

$$$

https://www.yworks.com/en/products_yfiles_practicalinfo_gallery.htmlhttps://www.yworks。 com/en/products_yfileswpf_about.html

オプション17:MindFusion

$$$

http://www.mindfusion.eu/features-wpfdiagram.htmlhttp://www.mindfusion。 eu /

オプション18:Dot2WPF

無料

DOTグラフを表示するためのWPFコントロール。

http://www.codeproject.com/Articles/18870/Dot-WPF-a-WPF-control-for-viewing-Dot-graphs

オプション19:SyncFusion

$$$

https://www.syncfusion.com/products/wpf/diagram

オプション20:AddFlow

$$$

https://www.componentsource.com/product/addflow-wpf-standard

オプション21:ラサール

$$$

http://www.lassalle.com/

オプション22:動的データ表示

http://dynamicdatadisplay.codeplex.com/

オプション23:ネブロン

$$$

https://www.nevron.com/

WinForms専用ですが、WPFにインポートできます。ただし、個々のアイテムをテンプレート化することはできません。これはWPFソリューションの大きな利点です。

Google検索用語

  • 「ワークフローwpfグラフ」
  • 「wpfグラフライブラリ」
  • 「wpfステートマシンライブラリ」
54
Contango

GraphX library for WPFを使用すると、すべての要件を簡単に実装できると思います。 Graph#に基づいており、詳細なドキュメントがあります。 http://panthernet.ru/en/projects-en/graphx-en

エッジおよび頂点テンプレートとともに、エッジラベル付けと自己ループエッジをサポートします。ご質問がある場合は、サイトのディスカッションセクションでお問い合わせください。

4

これが商業的なシナリオの場合は、 yWorks 'yFiles もご覧ください。

探しているすべての機能を備えており、最も優れた機能は、ダイアグラムを自動的に配置する機能です。より大きなステートマシンがある場合、またはコードでステートマシンを作成する場合でも、これにより、大きなダイアグラムでも自動的に明確に配置できます。また、ラベルには自動ラベル配置アルゴリズムがあり、ラベルの配置を見つけて、ラベルが互いにまたは他の無関係な要素と重ならないようにします。

ライブラリは このYoutube Video で実際にライブで見ることができますが、すぐに Silverlightライブデモオンライン で再生することも、ライブラリを評価してサンプルソースで再生することもできます。

免責事項:私はyWorksで働いていますが、SOでは雇用主を代表していません。

2
Sebastian

こちらで読むことができます 二部グラフに関する同様の質問で NetworkView

ループ、頂点ラベリング、カスタム頂点可視化があり、簡単に編集して円にすることができます。ただし、Edgeのラベル付けはないと思います。試してみてください。

少なくとも自分でやることを決めた場合、それは非常に良いスタートです。

Codeprojectの記事「循環依存のあるグラフを視覚化する」 をご覧ください。

2
Mare Infinitus

以下にいくつかのオプションを示します。

必要なものが見つかることを願っています。お金がかかる人は、無料のトレイルも利用できます。 telerikまたはvisifireを使用すると、かなり素敵な結果を得ることができます!

1
Chris