2009-02-26 62 views
31

通过在这里,我的意思是类似的东西这些图片:.NET中有向或无向图的布局有哪些选项可用?

理想的解决办法:

  • 只使用托管代码
  • ,允许输出为位图图片
  • ,允许输出到WPF元素
  • 包括某种形式的交互表面的显示支持缩放,平移和节点的重组

我也有兴趣在听到有可能被用作项目图这种工作的起点。如果它需要一些发展来实现我想要的,那么我准备好解决它。这个目标中最复杂的部分似乎是在合理的时间框架内获得图形布局。

+0

作为一个在心里告诉自己,有一个好看的Clojure库这里http://lisperati.com/vijual/ – 2010-05-23 16:57:49

回答

8

微软研究院为.NET提供了一种称为MSAGL(自动图形布局,以前称为GLEE)的工具。

MSAGL可以在这里找到:http://research.microsoft.com/en-us/downloads/f1303e46-965f-401a-87c3-34e1331d32c5/default.aspx

免责声明:我没有使用过的工具,所以我不知道它是否适合你(和我也不知道发牌条件,似乎它是非商业应用程序)。但至少它看起来很有趣。

+0

我用GLEE V1之前。它是免费的,但非常粗糙。最新版本(1.2)售价150英镑(220美元)。我希望听到理想的免费解决方案。 – 2009-02-26 10:15:49

+0

BTW项目主页是在这里:http://research.microsoft.com/en-us/projects/msagl/default.aspx – 2009-02-26 10:22:08

+0

NDepend的使用它,所以我觉得许可证允许商业利用。 http://codebetter.com/blogs/patricksmacchia/archive/2008/09/09/interactive-code-dependencies-graph.aspx – 2009-02-26 10:22:16

0

它不是.NET,但是经常引用的用于渲染图形的工具包是AT & T Graphviz。我自己只使用了独立应用程序,但源代码在类似于开源许可证的情况下可用。

Graphviz由流行的代码文档工具doxygen使用,以自动为其生成的文档绘制各种图表。

+0

我在几年前写过的.NET程序集依赖分析器中使用了Graphviz。这非常简单,但只输出位图或SVG,并需要在客户端进行安装,然后进行COM互操作。这并不坏,但不是我所希望的! – 2009-02-26 10:18:18

+0

如果任何人有兴趣看到一些使用WinGraphViz通过COM的粗略代码,请参阅http://www.drewnoakes.com/code/dependancyanalyser/ ...代码是VS2003,承认代码是有点尴尬我的,但它得到了重点。 – 2009-02-26 10:21:12

0

当我做了一些工作,一个简单的表格涉及到去年夏天的图表,我发现最好的选择不是过于昂贵,而是在SVG中手动完成它,即从一堆字符串中写出一个SVG文件,然后使用Inkscape将其渲染为图像。

这不是一个快速简便的解决方案,但它确实允许接近无限定制,所以如果你有一个基于连接等

3

Graphviz的是组织图表或做空间组织可能是好的在我看来,仍然是今天最好的图库之一。但是,将它集成到.Net是一种痛苦。

,能够调用命令行工具来生成基于图形的输入的形状输出,则读出的输出,并躺在显示graphviz的已经计算出任何形状的自定义控制元素。这非常黑客,但它是我们团队几年前将graphviz与.Net整合的最佳方式。

今天可能会有更好的解决方案;那时GLEE仍然非常具有挑战性,我从未见过微软自那时以来的进步。

0

我一直在玩GLEE/MSAGL,实际的布局本身对于我所需要的已经够用了,但是我希望能够更好地控制节点内的实际内容,而不仅仅是一个单一的值像现在。

比如我想有被隐藏,直到我在节点点击一个扩展,或双击节点或用鼠标悬停“详细信息”。

假设GLEE不能做到这一点现在在那里任何纯.NET解决方案可用,可以做到吗?

1

使用QuickGraph输出点文件GraphViz。我在最近的一个项目中这样做了,而且它似乎工作得很好。 Look here查看解析.plain文件的示例代码,或者使用我的项目here作为输出.png图像的参考。

12

Graph#也是另一种选择。我没有亲自使用过它,但我一直有意绕过去查看它。

0

Northwoods提供他们GoLayout产品纯.NET解决方案。它们提供树,强制指导和分层有向图(这不是Sujiyama效应,但对于许多数据集来说并不是太遥远)。价格为1790美元/座,价格昂贵。还有一些限制:最重要的是,它们的实现是为“可读的”图形设计的。我给了它超过5000个节点的数据集,并且没有问题,但是我也可以生成少于500个节点的数据集,导致它有堆栈溢出(递归太深)。根据您的域名,它可能(或不可能)很适合。如果你需要一个处理任何数据集的通用布局包,我会建议Graphwood超过Northwoods。

我还没有使用他们的任何WPF功能,但我知道他们有他们。我一直在WinForms的土地上使用他们的东西。

1

我已经使用MsAgl,它很不错。它也有WinForms和WPF的观众,这些对你而言可能并不重要。人们不必使用观看者,因为它们与图形布局引擎非常松散地耦合。

它不支持Graphviz所做的一切(特别是在某些形状类型方面)。此外,文件可能会更好,但它是非常坚实的,如果不是最精美的MS产品有史以来。

它并勾选所有你提到的要求的项目,虽然“对观众”重新组织只支持拖放移动节点重路由边和重新定位的标签。图形不会通过重新定位任何其他项目来响应这些元素的移动。

8

我在NDepend团队工作,我确认:我们在2008年9月从GraphViz切换到MsAgl,并且MsAgl许可证确实允许商业利用。这里有一些MsAgl graphs integrated in NDepend的示例图片(一切都是交互式的,节点可移动/可选/可移动/可点击,边缘可编辑/可选/可移动/可点击,布局可缩放,清洁不够一起工作):

enter image description here enter image description here enter image description here

2

我用NodeXL,http://www.codeplex.com/NodeXL,这是一个.NET 3.5库(也是一个Excel插件)。 NodeXl由微软研究院开发,非常简洁:它具有可视化算法和一些指标,但它仍处于开发的早期阶段。如果你是一位经验丰富的.Net开发人员,那么我肯定会看看它。

但是,如果你知道Python的话,我肯定会推荐Networkx和其表弟pygraphviz这是Graphviz的一个接口。我已经使用了这两种工具,并且当我使用NodeXL时,Python/Networkx的工作效率要高得多。

GLEE是微软的封闭源代码库,你只能在非商业软件免费使用,同时NodeXL是开源的微软的方式,但你可以在你开发一个产品运用自如。

2

只是为了让的选项的完整列表:Graphviz4Net是什么Coincoin在他的回答已经提出的开源实现。

相关问题