暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

可交互的网络图可视化工具集合

AISeer 2021-09-23
2559

背景

近日有个需求是想更好地展示网络图及其属性,之前使用的 networkx 库可以处理图数据但画出来的图是静态的且不具备任何交互性,因此想找一个交互性较好的网络图绘制工具。

目前了解的基于 Python 语言绘制动态图的库包括但不局限于以下几种:

  • Ployly
  • PyEcharts
  • AnyChart
  • PyVis

其它绘图软件 Gephi 和 Pajek 提供非常好的绘图效果但不支持源码操作,本文注重 Python 源码绘图工具。

以下仅体验这几种不同工具的绘制效果来进行比较选择,不附加任何源码,如有需要请参考提供的官方链接。

Plotly

著名的 python 交互式图表可视化库,但其绘制 network graph 图局限性较大,以下参考官方教程示例。

https://plotly.com/python/network-graphs/#

简单的图绘制结果如下,节点可以显示「标签」及其「连接度」

仅可以对整个图使用缩放功能,但是不可将节点拖动。

当然有其它解决方法来绘制节点可拖动的图,结果如下所示

但是其基于 dash 库 pip install dash dash-cytoscape
,感觉稍微有点麻烦而且不提供对 notebook 的支持。

详细参考官方教程:https://plotly.com/python/

PyEcharts

Echarts 是百度开源的图表可视化项目,对 JavaScript 支持效果非常好,同时也提供了 Python 接口 pyecharts。

https://pyecharts.org/#/zh-cn/basic_charts?id=graph%ef%bc%9a%e5%85%b3%e7%b3%bb%e5%9b%be

Pycharts 绘制的关系图如下所示,除了显示节点和边的标签外,可以高亮当前选中的节点和边,但其基于图布局不可以随意拖动节点。

当然也可以达到其它更加绚丽的效果,📢 图可以根据布局进行动态展示的,看起来更加炫!

参考:https://gallery.pyecharts.org/#/Graph/README


AnyChart

AnyChart 这个项目的图展示效果非常符合我对图的需求,节点和边的形状、标签信息可以高度定制化,而且节点可以任意拖动,可以基于 Java、Scala、JavaScript、Python等语言使用。

https://docs.anychart.com/Basic_Charts/Network_Graph

以下列举几个官方给的示例,

虽然 AnyChart 支持 Python,但是需要配合 Django、MySQL 一起使用就有点复杂,这个库比较适合中大型项目的图展示。对于日常图效果展示有点杀鸡用牛刀了!

PyVis

PyVis 是一个可交互的图可视化库,可以以 networkx 格式的图作为输入进行展示。

https://pyvis.readthedocs.io/en/latest/

提供了基本的节点显示和操作,可以有不同的布局,展示结果如下所示

pyvis

个人感觉图展示美化效果稍微 low 一点但基本符合需求,因此目前先采用这个库来做可视化,后续在使用过程中再进行更新其缺点。




dreamhomes


博客:dreamhomes.top

隐形字

公众号:DreamHub


长按识别二维码关注




👇🏻 左下角点击 「阅读原文」 排版效果更好哦!

文章转载自AISeer,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论