用networkx和matplotlib绘制显示网络图

1.用networkx的Graph()方法来生成一个无多重边无向图,其中networkx可以生成四种图,分别为无多重边无向图、无多重边有向图、有多重边无向图和有多重边有向图。

import networkx as nx
G = nx.Graph()
G = nx.DiGraph()
G = nx.MultiGraph()
G = nx.MultiDiGraph()

 

 而我要生成的是无多重边无向图,因此我用G = nx.Graph()。

2.添加结点,在这里我选用的是add_nodes_from(nodes),参数nodes应为由结点组成的列表,如[1,2,3,4]。当然,也可以用add_node_from(node)来依次添加结点。

3.添加边,其实边分为有权值的边和无权值的边,我需要添加的是有权值的边,用add_weighted_edges_from(edges)(注意python3是这个方法,python2可能方法名不同),edges参数应为[('a','b',2),('c','d','1')]这种类型,其中a、b为边的两个结点,2则为权值。

前面所讲两个方法都是图G的方法。

4.用networkx来绘出网络图,nx.draw(G,pos,node_color,edge_color,width_size,node_size,with_labels)。

G为我们想要绘出的图,pos为网络图布局,我试了很多布局发现nx.drawing.layout.spring_layout(G)通常是我们想要的布局,node_color、edge_color、width_size、node_size、with_label则分别为结点颜色、边颜色、边的宽度、结点大小、结点是否带结点名,颜色的设置我用十六进制就可以了,颜色选用参考下面的链接。

              https://www.sioe.cn/yingyong/yanse-rgb-16/

5.matplotlib.pyplot.show()显示图。

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
colors = range(20)
G.add_nodes_from(nodes)
G.add_weighted_edges_from(edges)
#nx.draw_networkx_edges(G,pos = nx.drawing.layout.spring_layout(G),edge_color = '#000000',width = 0.1)
#nx.draw_networkx_nodes(G,pos = nx.drawing.layout.spring_layout(G),node_color = '#A0CBE2',node_size = 1)
nx.draw(G,pos = nx.drawing.layout.spring_layout(G),node_color='#0000CD', 
	edge_color='#000000',width=0.01, node_size = 0.5,edge_cmap=plt.cm.gray, 
	with_labels=False)
plt.show()

 

  • 1
    点赞
  • 6
    收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 2

打赏作者

qq_37373452

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值