Java 11 HTTP 客户端示例_JavaTutorialNetwork 中文系列教程

NetworkX:是一个简单、多样化、能快速生成网络图形的Python库

1 说明:

=====

NetworkX是一个Python包,用于创建、操纵和研究复杂网络的结构、以及学习复杂网络的结构、功能及其动力学。

NetworkX测试的代码覆盖率超过%,是一个多样化,易于教学,能快速生成图形的Python平台。

NetworkX提供了适合各种数据结构的图表、二合字母和多重图,还有大量标准的图算法,网络结构和分析措施,可以产生随机网络、合成网络或经典网络,且节点可以是文本、图像、XML记录等,并提供了一些示例数据(如权重,时间序列)。

附加知识:matplotlib的中文设置的另外一种方法。

2 准备:

=====

官网:

https://github.com/networkx/networkx
http://networkx.github.io/
https://pypi.org/project/networkx/
https://networkx.github.io/documentation/stable/tutorial.html

安装:

pip install networkx

3 Erdos Renyi:

===========

代码:随机图

import matplotlib.pyplot as plt #用来显示图
from networkx import nx
n =   #  nodes=节点
e =   #  edges=边线
#随机图形
G = nx.gnm_random_graph(n, e)
#nx.draw(G) #默认节点node内不显示阿拉伯数字
nx.draw(G,with_labels=True)
plt.show()

图:

4 Node Colormap:

==============

代码:

import matplotlib.pyplot as plt
import networkx as nx
#,就是n=node,画椭圆
G = nx.cycle_graph()
#位置,iterations=迭代,建议,否则就不是椭圆
pos = nx.spring_layout(G, iterations=)
#cmap=代表colormap=颜色图
#nx.draw(G, pos, node_color=range(), node_size=, cmap=plt.cm.Blues)
#nx.draw(G, pos, node_color=range(), node_size=, cmap=plt.cm.Reds)
#with_labels=True 在节点内显示阿拉伯数字标签
nx.draw(G, pos, node_color=range(), node_size=, cmap=plt.cm.Reds,with_labels=True)
plt.show()

图:

5 无向图、添加子图:

=======

代码:

import networkx as nx
import matplotlib.pyplot as plt
 
G = nx.Graph() #建立一个空的无向图G

G.add_node(&#;a&#;)  #添加一个节点1
G.add_nodes_from([&#;b&#;,&#;c&#;,&#;d&#;,&#;e&#;])  #加点集合

#添加子图
&#;&#;&#;
G.add_node(0)   
H=[1,2,3,4,5,6,7,8,9] 
G.add_nodes_from(H)     
&#;&#;&#;
#等同上面
#H=[0,1,2,3,4,5,6,7,8,9]  #方法一
H=range()  #方法二:python知识复习

G.add_nodes_from(H)   
#显示节点标签
nx.draw(G, with_labels=True)
plt.show()

图:

6 中文显示:

=========

matplotlib另外一种中文显示设置。

本机操作示范:

在root下进入本机文件夹:注意本机为linux操作系统,window大同小异。

file:///usr/local/python3.8/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf

将自己的中文字体:hwfs.ttf(华文仿宋字体==用来显示中文的)放在ttf文件夹下。

因为matplotlib默认调用的为DejaVuSans.ttf字体文件,所以先将DejaVuSans.ttf复制一个,备份,取名为DejaVuSans_beifen.ttf,然后将hwfs.ttf改名为DejaVuSans.ttf,就可以显示中文了,超级简单。

7 人物关系权重图:weighted_graph

===========================

数据是虚拟的,这个很实用,人物关系权重图。

代码:

import matplotlib.pyplot as plt
import networkx as nx
G = nx.Graph()
#节点关系和权重
G.add_edge(&#;李白&#;, &#;王维&#;, weight=)
G.add_edge(&#;李白&#;, &#;杜甫&#;, weight=)
G.add_edge(&#;杜甫&#;, &#;苏轼&#;, weight=)
G.add_edge(&#;杜甫&#;, &#;王昌龄&#;, weight=)
G.add_edge(&#;杜甫&#;, &#;杜牧&#;, weight=)
G.add_edge(&#;李白&#;, &#;苏轼&#;, weight=)
#定义权重与人物关系的指标赋值
elarge = [(u, v) for (u, v, d) in G.edges(data=True) if d[&#;weight&#;] > ]
esmall = [(u, v) for (u, v, d) in G.edges(data=True) if d[&#;weight&#;] <= ]
#建立布局 pos = nx.spring_layout美化作用
pos = nx.spring_layout(G)
#节点布局和大小设置
nx.draw_networkx_nodes(G, pos, node_size=)
#边的设置和宽度设置等
nx.draw_networkx_edges(G, pos, edgelist=elarge, width=6)
#style: 边的样式(默认为实现,可选: solid|dashed|dotted,dashdot)
nx.draw_networkx_edges(G, pos, edgelist=esmall, width=6, alpha=, edge_color=&#;b&#;, style=&#;dashed&#;)
# labels标签名和字体大小设置
nx.draw_networkx_labels(G, pos, font_size=)  #已经设置好中文显示
#关闭网格线,不显示坐标轴线
plt.axis(&#;off&#;)
plt.show()

图:


8 高级版:

=======

代码省略。

结合flask、d3.js的网页动画的networkx。

===自己整理并分享出来===

喜欢的人,请点赞、关注、评论、转发和收藏。

原文链接:,转发请注明来源!