networkx+python构建图结构数据并可视化

荒凉一梦 提交于 2020-07-27 05:52:39

目前处理非欧数据最常见的方法还是构建,而networkx一个专门的构建图数据的工具。方便又好用。

先给链接:https://networkx.github.io/

官方文档https://networkx.github.io/documentation/latest/

networkx的安装方法上面的官方文档已经很详细记录,阿盏就不赘述了。

官方文档里给了几个demo,虽然便利,但泛化性不强。我这边给一个泛化性强一些的demo:

import networkx as nx
import matplotlib.pyplot as plt

g = nx.Graph()
g.add_edge('1', '2')
g.add_edge('2', '3')
g.add_edge('1', '4')
g.add_edge('2', '4')
fig, ax = plt.subplots()
nx.draw(g, ax=ax)
plt.show()

咱们构建的图数据就是g,看得出来一共有['1', '2', '3', 4'']四个节点。可视化结果为:

就一张光秃秃的点棍图,可以把节点label加上,只需设置with_labels=True:

import networkx as nx
import matplotlib.pyplot as plt

g = nx.Graph()
g.add_edge('1', '2')
g.add_edge('2', '3')
g.add_edge('1', '4')
g.add_edge('2', '4')
fig, ax = plt.subplots()
nx.draw(g, ax=ax, with_labels=True) # show node label
plt.show()

有没有发现每次可视化,图节点的位置是随机任性摆放的。如果想固定节点的位置,也是可以的:

import networkx as nx
import matplotlib.pyplot as plt

g = nx.Graph()
g.add_edge('1', '2')
g.add_edge('2', '3')
g.add_edge('1', '4')
g.add_edge('2', '4')

pos_dict = {'1':[ 1,  1], '2': [ 1.5,  0.8], '3': [ 1.7,  2.8], '4': [ 0.6,3.3]}
positions=nx.spring_layout(G, pos=pos_dict)

fig, ax = plt.subplots()
nx.draw(g, ax=ax, with_labels=True, pos=positions)
plt.show()

如上输入每个节点在可视化中的坐标,就可以把节点固定在一个位置。这样,无论运行多少次,其可视化结果也只会是一个样子:

先mark,持续更新。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!