总述
今天被问了一个问题:如何把复杂的调用树可视化?
首先,这个问题可以被归结为:如何实现有向图的可视化。
当然,答案有很多种。可选的简单地解决方案可能是基于echarts的在线的生成工具 [1],或是Ant V [2]此类专用于画图的框架。本文主要介绍使用python中的networkx宏包作图。
环境配置
python 2.7.17: 依赖库为matplotlib, networkx
1 | pip install matplotlib |
代码
1 | import matplotlib.pyplot as plt |
具体的nerworkx用法参见已有博客 [3]或者networkx官方文档 [4],此处不再赘述。
值得一提的是,虽然python编码相对方便,但是画图的速度远不及基于JavaScript的各种框架。nx.draw(G,with_labels=True)
这一行的执行速度非常慢,即使图中只有不超过10个节点也花了近半分钟进行生成。如果需要实时性高的生成,建议使用前文中的[1][2]或类似框架。
Reference
[1] 利用echarts实现有向图可视化,
http://bookshadow.com/weblog/2016/11/22/echarts-directed-graph-visualization/
[2] AntV, https://antv.vision/en
[3] networkx, https://www.cnblogs.com/ljhdo/p/10662902.html
[4] networkx tutorial,
https://networkx.github.io/documentation/stable/tutorial.html