参考:https://blog.csdn.net/qq951127336/article/details/54586869

1.创建图


 networkx有四种图 Graph 、DiGraph、MultiGraph、MultiDiGraph,分别为无多重边无向图、无多重边有向图、有多重边无向图、有多重边有向图。

 import network 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)])

 #显示:

 #需要导入matplotlib

 import matplotlib.pyplot as plt

 nx.draw(G)

 plt.show()

显示函数:

 nx.draw(G,pos = nx.random_layout(G),node_color = 'b',edge_color = 'r',with_labels = True,font_size =18,node_size =20)

 pos 指的是布局 主要有spring_layout , random_layout,circle_layout,shell_layout。node_color指节点颜色,有rbykw ,同理edge_color.
with_labels指节点是否显示名字,size表示大小,font_color表示字的颜色。

参考:https://networkx.github.io/documentation/latest/tutorial.html#drawing-graphs

2.画出好看的图

 两个主要的函数:

 def draw_networkx_edges(G, pos, edgelist=None, width=1.0, edge_color='k',

          style='solid', alpha=1.0, edge_cmap=None, edge_vmin=None, edge_vmax=None,

          ax=None, arrows=True, label=None, **kwds):

 G:图表 一个networkx图

 pos:dictionary 将节点作为键和位置作为值的字典。 位置应该是长度为2的序列。

 edgelist:边缘元组的集合 只绘制指定的边(默认= G.edges())

 width:float或float数组 边线宽度(默认值= 1.0)

 edge_color:颜色字符串或浮点数组 边缘颜色。可以是单颜色格式字符串(default ='r'),

 或者具有与edgelist相同长度的颜色序列。 如果指定了数值,它们将被映射到 颜色使用edge_cmap和edge_vmin,edge_vmax参数。

 style:string 边线样式(默认='solid')(实线|虚线|点线,dashdot)

 alpha:float 边缘透明度(默认值= 1.0)

 edge_ cmap:Matplotlib色彩映射 用于映射边缘强度的色彩映射(默认值=无)

 edge_vmin,edge_vmax:float 边缘色图缩放的最小值和最大值(默认值=无)

 ax:Matplotlib Axes对象,可选 在指定的Matplotlib轴中绘制图形。

 arrows:bool,optional(default = True) 对于有向图,如果为真,则绘制箭头。

 label:图例的标签

 def draw_networkx_nodes(G, pos, nodelist=None, node_size=300, node_color='r',

           node_shape='o', alpha=1.0, cmap=None, vmin=None, vmax=None, ax=None, linewidths=None, label=None, **kwds):

 pos:dictionary 将节点作为键和位置作为值的字典。 位置应该是长度为2的序列。

 ax:Matplotlib Axes对象,可选 在指定的Matplotlib轴中绘制图形。

 nodelist:list,可选 只绘制指定的节点(默认G.nodes())

 node_size:标量或数组 节点大小(默认值= 300)。如果指定了数组,它必须是 与点头长度相同。

 node_color:颜色字符串或浮点数组 节点颜色。可以是单颜色格式字符串(default ='r'), 或者具有与点头相同长度的颜色序列。

 如果指定了数值,它们将被映射到 颜色使用cmap和vmin,vmax参数。看到 matplotlib.scatter更多详细信息。

 node_shape:string 节点的形状。规格为matplotlib.scatter 标记,'so ^> v <dph8'(默认='o')之一。

 alpha:float 节点透明度(默认值= 1.0)

 cmap:Matplotlib色图 色彩映射节点的强度(默认=无)

 vmin,vmax:float 节点色彩映射缩放的最小值和最大值(默认值=无)

 线宽:[无|标量|序列] 符号边框的线宽(默认值= 1.0)

 label:[无|串] 图例的标签

 然后基本上所有networkx的超酷精美图的源码你都能快速弄懂了。
http://networkx.github.io/ 网络图案例源码 https://networkx.github.io/documentation/latest/auto_examples/index.html#drawing

3.Example:

 import matplotlib.pyplot as plt
import networkx as nx
G = nx.random_geometric_graph(200, 0.125)
# position is stored as node attribute data for random_geometric_graph
pos = nx.get_node_attributes(G, 'pos') # find node near center (0.5,0.5)
dmin = 1
ncenter = 0
for n in pos:
x, y = pos[n]
d = (x - 0.5)**2 + (y - 0.5)**2
if d < dmin:
ncenter = n
dmin = d # color by path length from node near center
p = dict(nx.single_source_shortest_path_length(G, ncenter)) plt.figure(figsize=(8, 8))
nx.draw_networkx_edges(G, pos, nodelist=[ncenter], alpha=0.4)
nx.draw_networkx_nodes(G, pos, nodelist=list(p.keys()),
node_size=80,
node_color=list(p.values()),
cmap=plt.cm.Reds_r) plt.xlim(-0.05, 1.05)
plt.ylim(-0.05, 1.05)
plt.axis('off')
plt.show()
result:

最新文章

  1. Linux 设备驱动程序 字符设备
  2. 【python】Head First Python(五)
  3. 怎样把windows中安装的程序列出来?
  4. 保存登录信息的Cookie加密技术
  5. Android中FragmentPagerAdapter对Fragment的缓存(二)
  6. JodaTime用法简介
  7. PHP安全设置
  8. 只要关闭浏览器,session就消失了
  9. CodeForces 203C Photographer
  10. Windows下安装MySQLdb, Python操作MySQL数据库的增删改查
  11. CSS3特性修改(自定义)浏览器默认滚动条
  12. 网络叠加模式VLAN、VxLAN、GRE
  13. Android调试神器stetho使用详解和改造
  14. 远程代理模式-Remote Proxy(Java实现)
  15. Navicat Premium 12.0.24安装与激活(亲测已成功激活)
  16. Java中子类对象初始化的过程
  17. IdentityServer开题篇
  18. Linux原理总结 。。。更新中
  19. Unity3d自制字体
  20. react复习总结(1)--react组件开发基础

热门文章

  1. 双十一只是在搞噱头么?看看ABBYY FineReader就知道了
  2. “肥宅快乐数”-python暴力版
  3. Java之秒杀活动解决方案
  4. video标签实现简单视频背景+遇到问题(视频无法显示,不能自动播放)
  5. PHP下的异步尝试二:初识协程
  6. IDEA Maven Web项目 clone到本地导入到Eclipse中,启动服务器的时候会出现这个错误:SEVERE: Exception starting filter [hiddenHttpMethodFilter]
  7. js实现导航固定定位
  8. ArcGIS 安装
  9. [using_microsoft_infopath_2010]Chapter3 表单设计基础:使用InfoPath布局,控件,和视图
  10. [CSS3] The different of Background-size between &#39;cover&#39; and &#39;contain&#39;