如何在.Net中可视化复杂图表?

12

我需要可视化一个图表。我不知道如何给它命名(顺便说一句,如果你知道的话-我会感激如果你告诉我)。最好的情况是图形元素可点击(这样当用户点击块时,我可以处理带有元素ID指定的事件),但即使没有任何交互性,我也可以生存下来。我可能希望能够聚焦于特定节点并将所有其他节点从其角度布局以查看。是否有任何组件可用于此任务?如果没有,我应该寻找什么来帮助我开发绘制此类具有视觉舒适布局的图表的算法?

这种图表的实际性质相当普遍:每个块表示从2个操作数导出。橙色圆圈是对2个操作数的引用,绿色圆圈是连接到使用者的连接点。区分操作数位置(左或右)可能很重要,例如,如果派生表示差异或除法的数学运算(在这种特殊情况下,块可以是三角形,但在其他情况下,操作数本身可以利用知道它是什么块的左操作数和什么块是它的右操作数)。另一个常见的应用程序是具有复杂关系的交集集合。

10个回答

5
你可以看一下Graph#,但我不确定它能否很好地处理像这样的复合节点。不过它可能是一个很好的起点。

4

终于有来自微软的东西了!由于NuGet包目前适用于.NET Standard,这意味着可以在.NET Framework 4.8的Windows Forms项目中使用该库来渲染图形。同时也适用于WPF项目的图形渲染。 - sɐunıɔןɐqɐp

3

我还想向您介绍graphviz。虽然不是.NET解决方案,但您可以提供易于编写的文件来创建图形。我认为布局并不是一件非常简单的事情,特别是随着节点数量的增加,因此找到一些工具应该是一个好事情。


1
有一些用于从C#调用Graphviz的绑定。它们在我看来都有点实验性。 - High Performance Mark

2
首先,您需要以某种方式在内存中表示它,有很多方法,例如邻接表。然后您需要绘制它。虽然通常绘制图形很简单,但如果您需要对其进行布局则不是那么简单。看起来在您的情况下,这正是您需要做的才能得到漂亮的表示。这并不容易。
编辑:有趣的是,微软研究部门似乎制作了一个

2

2

Graphviz4Net 提供了用于图形可视化的 WPF 组件。它依赖于 GraphViz(一款开源命令行图形可视化工具)。


1
原始仓库的分支 https://github.com/frblondin/Graphviz4Net - pizycki

1

我找不到这个组件,于是决定自己编写控件、线条和标头,并使用它们来呈现我的图表。 如果需要的话,我可以提供组件和程序以展示它们。 我用Visual Studio 2008的C#语言编写了这些组件和程序。


非常感谢,Andriy。我很乐意尝试应用和/或扩展您的解决方案(当然会将我的扩展发送回给您)。请将其发送至wosesixukijimono@tempomail.fr(很抱歉这是一个可怕的地址,它是真实的但只是临时使用,请完整复制粘贴;不幸的是,在此网站上我没有找到私人消息系统,也没有在您的个人资料中找到您的联系方式,因为我避免在公共网页上发布我的电子邮件)。 - Ivan

1
这是一个相对较新且持续维护的Graphviz .NET封装程序:https://github.com/Rubjerg/Graphviz.NetWrapper (免责声明:我是作者)
与其他封装程序不同,此封装程序通过直接调用本地Graphviz代码来工作。这意味着您不仅可以在C#代码中以编程方式构建图形,还可以在C#代码中读取布局属性并以任何您想要的方式进行渲染。后者听起来特别像您感兴趣的内容。

0
一个相当不错的工具是Nevron的图表工具。但这是收费的
我目前正在使用他们的图表和用户界面,它们工作得非常好。

0

我曾成功地使用过这个商业产品:GoDiagram

它支持节点上的多个端口,就像你所展示的那样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接