繁体   English   中英

python中的有向图

[英]Directed graph in python

我试图用我的ETL(提取转换加载)管道描述不同数据实体的关系。 最终输出是一个大的有向图。 到目前为止,我正在使用Python提取数据关系。 Pydot帮助我生成了svg文件,可以使用浏览器打开该文件。 我生成的图形是静态的。

Pydot允许我设置工具提示,并允许我用节点或边缘链接其他html页面。 我正在寻找更多。

该图的一小部分如下所示

有向图

在此处输入图片说明

我想用这张图做几件事。

  • 每个节点可以具有多个属性(包括名称)。 由于空间有限,我无法显示这些属性。 但是当用户将鼠标悬停在上面(或执行其他基于鼠标的操作)时,我希望这些属性显示为“浮动”表,如果用户不感兴趣,可以将其关闭。
  • 并非所有节点属性都是整数或字符串。 它也可以是图形。 例如,对于其中一个节点,我可能具有条形图,该条形图显示了最近7天中该数据实体的加载频率。 我希望当用户将鼠标移到该节点上时,该条形图会浮动。 目前,我正在使用matplotlib生成与节点相关联的条形图/饼图(请参见上文)。 我在pydot中使用setURL将这些图与我的原始有向图链接。 但是用户体验不是很好,因为它将用户带到新页面。
  • 我对从Pydot / GraphViz默认获得的节点布局等感到满意。 除非绝对必要,否则我不希望从头开始做所有事情。
  • 能够根据节点或边属性中的查询仅突出显示图形的某些部分

我阅读了这个论坛,并遇到了一些与我类似的问题。

  • gephi
  • igraph(我玩过igraph,可以通过顶点或边进行查询。我无法弄清楚如何制作最终图形
    基于用户输入进行交互(例如,将鼠标悬停在节点上的浮动表等)
  • Javascript库-sigma.js,arbor.js,d3.js nodebox
  • networkX
  • nodebox

我有Python技能,但是在Javascript方面还是个新手。 我想从专家那里知道什么是我最好的选择(从功能和易用性的角度来看)。 基于浏览器的解决方案是首选。

任何建议/帮助将不胜感激。

谢谢阿比吉特

尝试NetworkX。 节点属性可以是任何可哈希的,因此(至少)可以解决您的前两个项目符号。

您仍将使用matplotlib生成图表。 我不知道有比这更好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM