networkx 标签_networkx实现简单网络结构图
大家好,又拖更了。最近实习在做宏观和基本面量化,不得不说,作为一名合格的Quant,不光要具备高水平的代码能力,数学能力,还要有扎实的经济学和金融学基础。不然到最后没有充实的理论基础,做出再漂亮的结果可信度也不高。
本期内容来源于一个朋友的需求。需要用Python绘制一个网络图。
Python中绘制网格图一般使用networkx这个库,我们可以用pip来安装
pip install networkx
当然,如果你用的是Anaconda的话,自带这个库,就不用装了。
本文的开发环境是Jupyter Qtconsole,Python版本为3.8
首先,我们导入networkx库和要用到的库
import networkx as nximport pandas as pdimport matplotlib.pyplot as plt
读入需要绘制的数据
data = pd.read_csv('.../Rdata.csv')
看一下数据的格式
data.head(10)
数据给了起始节点和终点节点,并且给出了每一个边的权重值。
用networkx绘制图形其实非常简单,有一点类似于matplotlib的搭积木的感觉,先定义一个画布,然后再逐渐的往上添加图层。
首先我们生成一个“画布”
G = nx.DiGraph()
由于我们的数据是一个包含起点和终点的数据集,因此我们生成了一个有向网格图。此时还是一个白板。我们需要往里添加点和边。
添加点的方法有这么几种。
文档中说明,如果添加一个节点,需要能被hash加密的Python对象,除了None对象。
add_node方法可以这么使用
比如
G.add_node(1)G.add_node_from(['1', '2']) # 此处传入一个列表进行多个node的设定
添加完点之后,我们可以添加边
边的添加要使用到add_edge方法
与add_node方法类似,也可以单个添加或者多个添加
G.add_edge('x', 'y')G.add_edges_from([['a', 'b'], ['c', 'd']])
注意使用add_edges_from时要传入一个二维的列表
我们还可以添加带有权重的边,此时权重体现在边的厚度或者宽度上
方法为add_weighted_edges_from
此时,我们不论是添加单个边,还是多个边,都需要将起点节点,终点节点,和权重放在一个元组中,然后将单个元组或者多个元组放在一个列表中。
如下所示
G.add_weighted_edges_from([('x', 'y', 1.0)])G.add_weighted_edges_from([('a', 'b', 0.5), ('c', 'd', 0.8)])
我们可以一个一个的添加带有权重的边,也可以将他们放在一起统一添加。
那么我们此时可以写一个for循环来将我们的数据绘制到图中
for i in range(data.shape[0]): x = str(data.iloc[i, :].loc['source']) y = str(data.iloc[i, :].loc['target']) w = float(data.iloc[i, :].loc['weight']) G.add_weighted_edges_from([(x, y, weight)])
此时我们的就把数据全部绘制在图中了。
最后一步,我们需要将图显示出来。此时要用到networkx的draw方法,非常的直观。
将之前的画布对象传入即可
nx.draw(G)
生成这样一个图。
但是呢,我们希望能够画的更加美观一点,起码把颜色改一下,把label显示出来。
我们可以使用下面的代码
nx.draw(G, pos=nx.random_layout(G), node_color='r',with_labels=True)
其中,pos表示位置,由于这时候我们的node并没有给出坐标,因此nx.random_layout会自动设定一个合理的位置。node_color表示节点的颜色,此处设为了红色,with_labels表示显示节点的标签。
我们输出图片看一看
此时就比刚才的看起来舒服一些了。
如果大家想要做出更好更精美的图,可以参照这个网站
http://networkx.github.io/
如需本文的数据和代码,可以公众号后台进行索取。
这篇文章这么水,我也不好意思求大家点“在看了”...
networkx 标签_networkx实现简单网络结构图相关推荐
- networkx 标签_networkx绘制BA无标度网络
step1: 导入networkx复杂网络库.matplotlib.pyplot.pandas import networkx as nximport matplotlib.pyplot as plt ...
- tensorflow打印模型图_从Tensorflow模型文件中解析并显示网络结构图(pb模型篇)...
最近看到一个巨牛的人工智能教程,分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.平时碎片时间可以当小说看,[点这里可以去膜拜一下大神的" ...
- python networkx模块_networkx模块
# # -*- coding: utf-8 -*-## #01-模块导入# # import networkx as nx# # import matplotlib.pyplot as plt### ...
- OSI七层网络结构图与TCP/IP五层网络结构图
一. OSI七层网络结构图与TCP/IP五层网络结构图 又称<OSI七层网络模型与TCP/IP四层网络模型>. (1)OSI七层模型 OSI中的层 功能 TCP/IP协议族 应用层 文件传 ...
- 深度学习中经典网络结构图和代码
Inception网络与其它网络的性能对比 PyTorch-Networks: 包含了分类.检测以及姿态估计等网络的pytorch代码 caffe-model-zoo: AlexNet.VGGNet. ...
- 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源
我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...
- 【计算机网络】终端接入配置及简单网络设计
目录 实验内容: 实验要求: 实验内容: 物理层认知实验: 终端接入配置实验: 方法一 方法二 简单网络设计 实验内容: (1) 物理层认知:认识双绞线.光纤.网络接口.交换机.无线接入设备 (2) ...
- python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...
- 简单网络聊天程序java_基于Java实现hello/hi简单网络聊天程序
Socket简要阐述 Socket的概念 Socket的英文原义是"孔"或"插座". 在网络编程中,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连 ...
最新文章
- python基础与大数据_Python大数据基础与实战第10章数据可视化.pptx
- 关于System.TypeInitializationException异常
- UNIX再学习 -- TCP/UDP 客户机/服务器
- “云计算”越来越重要 但更重要的是“云安全”
- TVM:通过Python接口(AutoTVM)来编译和优化模型
- python打包exe报错编码问题,使用Python打包含有pymssql成exe所躺的坑
- javascript 西瓜一期 10 十进制数数的详细进位解析
- java三国群雄_三国群英-真三国无双
- mac安装mysql的两种方法(含配置)
- Emacs lisp函数调用defun(五)
- 橡胶支座抗压弹性模量计算公式_单向滑动抗震弹性支座作用介绍
- Python使用matplotlib可视化模拟班级学生分数柱状图和折线图
- 传奇所有客户端大合集
- 一次旅行:汕尾-汕头-梅州
- marshmallow——Nested 类型
- matplotlib画图并设置图片大小
- pandas数据拼接
- java面试宝典2013
- 科技云报道:华为云数据灾备,守护企业的生命线
- 利用Biopython 快速根据pmid 来下载参考文献信息