目前处理非欧数据最常见的方法还是构建图,而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,持续更新。
来源:oschina
链接:https://my.oschina.net/u/4282347/blog/4330018