我试图用我的 ETL(提取转换加载)管道描述不同数据实体的关系。最终输出是一个大的有向图。到目前为止,我正在使用 Python 来提取数据关系。Pydot 帮助我生成可以使用浏览器打开的 svg 文件。我生成的图表是静态的。
Pydot 允许我设置工具提示并允许我将其他 html 页面与节点或边缘链接起来。我正在寻找更多。
图表的一小部分如下所示
我想用这张图做几件事。
- 每个节点都可以有多个属性(包括名称)。由于空间不足,我无法显示这些属性。但是当用户将鼠标悬停(或执行其他基于鼠标的操作)时,我希望这些属性显示为“浮动”表,如果用户不感兴趣,可以将其关闭。
- 并非所有节点属性都是整数或字符串。它也可以是图表。例如,对于其中一个节点,我可能有一个条形图,显示该数据实体在过去 7 天内加载的频率。当用户在该节点上移动(单击)鼠标时,我希望该条形图浮动。目前我正在使用 matplotlib 生成与节点相关联的条形图/饼图(请参见上文)。我使用 pydot 中的 setURL 将这些图与我的原始有向图链接起来。但是用户体验不是很好,因为它会将用户带到一个新页面。
- 我对默认情况下从 Pydot/GraphViz 获得的节点布局等感到满意。除非绝对必要,否则我不喜欢从头开始做所有事情。
- 能够根据节点或边属性中的查询仅突出显示图形的某些部分
我阅读了这个论坛,并在回答与我类似的问题时遇到了几个选项。
- 格菲
- igraph(我玩过 igraph,它可以让我通过顶点或边进行查询。我不知道如何
根据用户输入使最终的图形交互,例如鼠标悬停在节点上的浮动表等) - Javascript 库 - sigma.js、arbor.js、d3.js 节点箱
- 网络X
- 节点箱
我有 Python 技能,但在 Javascript 方面相当新手。我想从专家那里知道什么是我最好的选择(从功能和易用性的角度来看)。首选基于浏览器的解决方案。
任何建议/帮助将不胜感激。
谢谢阿比吉特