大家好,又拖更了。最近实习在做宏观和基本面量化,不得不说,作为一名合格的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实现简单网络结构图相关推荐

  1. networkx 标签_networkx绘制BA无标度网络

    step1: 导入networkx复杂网络库.matplotlib.pyplot.pandas import networkx as nximport matplotlib.pyplot as plt ...

  2. tensorflow打印模型图_从Tensorflow模型文件中解析并显示网络结构图(pb模型篇)...

    最近看到一个巨牛的人工智能教程,分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.平时碎片时间可以当小说看,[点这里可以去膜拜一下大神的" ...

  3. python networkx模块_networkx模块

    # # -*- coding: utf-8 -*-## #01-模块导入# # import networkx as nx# # import matplotlib.pyplot as plt### ...

  4. OSI七层网络结构图与TCP/IP五层网络结构图

    一. OSI七层网络结构图与TCP/IP五层网络结构图 又称<OSI七层网络模型与TCP/IP四层网络模型>. (1)OSI七层模型 OSI中的层 功能 TCP/IP协议族 应用层 文件传 ...

  5. 深度学习中经典网络结构图和代码

    Inception网络与其它网络的性能对比 PyTorch-Networks: 包含了分类.检测以及姿态估计等网络的pytorch代码 caffe-model-zoo: AlexNet.VGGNet. ...

  6. 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源

    我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...

  7. 【计算机网络】终端接入配置及简单网络设计

    目录 实验内容: 实验要求: 实验内容: 物理层认知实验: 终端接入配置实验: 方法一 方法二 简单网络设计 实验内容: (1) 物理层认知:认识双绞线.光纤.网络接口.交换机.无线接入设备 (2) ...

  8. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

  9. 简单网络聊天程序java_基于Java实现hello/hi简单网络聊天程序

    Socket简要阐述 Socket的概念 Socket的英文原义是"孔"或"插座". 在网络编程中,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连 ...

最新文章

  1. python基础与大数据_Python大数据基础与实战第10章数据可视化.pptx
  2. 关于System.TypeInitializationException异常
  3. UNIX再学习 -- TCP/UDP 客户机/服务器
  4. “云计算”越来越重要 但更重要的是“云安全”
  5. TVM:通过Python接口(AutoTVM)来编译和优化模型
  6. python打包exe报错编码问题,使用Python打包含有pymssql成exe所躺的坑
  7. javascript 西瓜一期 10 十进制数数的详细进位解析
  8. java三国群雄_三国群英-真三国无双
  9. mac安装mysql的两种方法(含配置)
  10. Emacs lisp函数调用defun(五)
  11. 橡胶支座抗压弹性模量计算公式_单向滑动抗震弹性支座作用介绍
  12. Python使用matplotlib可视化模拟班级学生分数柱状图和折线图
  13. 传奇所有客户端大合集
  14. 一次旅行:汕尾-汕头-梅州
  15. marshmallow——Nested 类型
  16. matplotlib画图并设置图片大小
  17. pandas数据拼接
  18. java面试宝典2013
  19. 科技云报道:华为云数据灾备,守护企业的生命线
  20. 利用Biopython 快速根据pmid 来下载参考文献信息

热门文章

  1. java笔试题(1)基础知识
  2. 单例模式(单例设计模式)详解
  3. Python代码与Linux删除路径文件命令脚本
  4. 《最后生还者》系列:神坛的根基是什么?
  5. 招高级自动化测试工程师
  6. 天涯[经济杂谈]一位创业者的商海感悟(语录版,连载中,持续更新)【力荐】
  7. 商标被驳回还可以再注册吗?
  8. 如何在PD虚拟机中开启系统的嵌套虚拟化功能?
  9. pdf文件如何设置密码保护
  10. DB2更改表字段长度