用networkx做网络关系可视化

创建图

第一步:图的声明
networkx有四种图 Graph 、DiGraph、MultiGraph、MultiDiGraph,分别为无多重边无向图、无多重边有向图、有多重边无向图、有多重边有向图。

import networkx as nx 

G = nx.Graph()
G = nx.DiGraph()
G = nx.MultiGraph()
G = nx.MultiDiGraph()

第二步:添加节点和边

# 方法一--------------------------------------
G.add_node('a')  # 添加点a
G.add_node(1,1)  # 用坐标来添加点
G.add_edge('x','y')   # 添加边,起点为x,终点为y
G.add_weight_edges_from([('x','y',1.0)])  # 第三个输入量为权值
# 方法二--------------------------------------
list = [[('a','b',5.0),('b','c',3.0),('a','c',1.0)]
G.add_weight_edges_from([(list)])
# 方法三--------------------------------------
G = nx.from_pandas_edgelist(df_table, source = 'A', target = 'B', edge_attr = 'C', create_using = nx.DiGraph())

第三步:图的显示

import matplotlib
import matplotlib.pyplot as plt

nx.draw(G,
        pos = nx.random_layout(G), # pos 指的是布局,主要有spring_layout,random_layout,circle_layout,shell_layout
        node_color = 'b',   # node_color指节点颜色,有rbykw,同理edge_color 
        edge_color = 'r',
        with_labels = True,  # with_labels指节点是否显示名字
        font_size =18,  # font_size表示字体大小,font_color表示字的颜色
        node_size =20)  # font_size表示字体大小,font_color表示字的颜色
plt.savefig("network.png")
nx.write_gexf(G, 'network.gexf')  # gexf格式文件可以导入gephi中进行分析
plt.show()

 

posted on 2020-10-06 10:35  Mint-Tremor  阅读(761)  评论(0编辑  收藏  举报

导航