用Python的networkx绘制精美网络图

2023-05-16

最近因为数学建模3天速成Python,然后做了一道网络的题,要画网络图。在网上找了一些,发现都是一些很基础的丑陋红点图,并且关于网络的一些算法也没有讲,于是自己进http://networkx.github.io/学习了一下。以下仅博主自己的总结,勿认真,有错误尽情指出,大家一起交流。
需要用到的module    malplotlib.pyplot 和networkx 

正文:

一、malplotlib和networkx的安装(作者使用的是python2.7 pycharm)

在Python的文件夹目录下Scripts目录中,如果有pip.exe 文件,那么可以用cmd 进入这个目录,然后输入  `pip insall --pre matplotlib`直接下载。如果有easy_install 也可以输入`easy_install。如果都不行就去官网  https://pypi.python.org/pypi/matplotlib/1.5.3`找对应版本下载。
至于networkx,pycharm的porject interpreter里添加就好。

二、创建图

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()

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表示字的颜色。
看到这里,各位应该就能画出大量网站上的基本networkx简单教程了,大概是这个样子
图1

三、绘制精美的图

如果你想要的图是这样的
这里写图片描述
或是这样的
这里写图片描述
还是这样的
这里写图片描述
这里写图片描述
可以继续看下去
首先要掌握两个方法

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):

G:图表
一个networkx图

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/ 网络图案例源码
这里写图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用Python的networkx绘制精美网络图 的相关文章

  • 【c++】生产者与消费者问题

    单个生产者和单个消费者 include lt iostream gt include lt mutex gt include lt condition variable gt include lt Windows h gt using na
  • 基于springboot人事管理系统java项目介绍

    人事管理系统是基于java编程语言 xff0c springboot框架 xff0c mysql数据库开发 xff0c 本系统分为员工和管理员两个角色 xff0c 员工的主要功能有登陆系统 xff0c 个人信息更新 xff0c 查看工资 x
  • C#,生信软件实践(02)——DNA数据库EMBL格式详解及转为FASTA格式文件的源代码

    gt 生信老白写的基础代码 fasta MAYBENOANYUSAGE EMBL 与 GenBank 文件一脉相承 xff0c 建议先阅读 GenBank 文件详解 C xff0c 生信软件实践 xff08 03 xff09 DNA数据库G
  • Activity onNewIntent详解

    onNewIntent 的触发时间 xff1a onNewIntent png 如图所示 xff0c onCreate 和 onNewIntent 不会被同时调用 官方文档 xff1a onNewIntent added in API le
  • 安装pyinstaller报错:AttributeError: type object Callable has no attribute _abc_registry

    安装pyinstaller xff1a pip install pyinstaller 提示 xff1a AttributeError type object 39 Callable 39 has no attribute 39 abc r
  • sql server 数据库开发 知识点

    sql server 数据库开发 1 含义 xff1a 数据库设计实际上就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程 E R图组成包括 xff1a 矩形表示实体集 椭圆表示属性 菱形表示关系 直线用来连接实体集与属性 x
  • Activiti学习笔记一 工作流基本概念

    最近刚接触流程引擎这一概念 xff0c 对Activiti进行学习 xff0c 感觉正在入门中 xff0c 整理下自己的学习笔记把 xff01 1 xff1a 工作流的概念 工作流 Workflow xff0c 就是 业务过程的部分或整体在
  • Activiti学习笔记六 流程实例 任务 执行对象控制流程执行

    上一篇我们看了流程定义 xff0c 我们接下来看一下流程实例 xff0c 任务 xff0c 和执行对象 流程实例 任务的执行 1 流程图 2 部署流程定义 private final ProcessEngine processEngine
  • datetimepicker 控件验证问题

    34 baseStudents activistTime 34 trigger 39 blur 39 validators notEmpty message 39 确定积极分子时间不能为空 39 span class hljs tag lt
  • eclipse中SVN分支合并到主干

    在项目开发中 xff0c 需要添加一些新的功能 xff0c 但是又不想影响到其他开发人员的项目进度 xff0c 所以决定使用SVN分支进行开发 xff0c 分支开发完毕后再合并到主干 本文介绍如何在eclipse中合并分支到主干 要想将分支
  • 阿里云服务器

    一年多之前 xff0c 也就11年5月份的样子 xff0c 阿里云云服务器产品线终于上线了 但那时候 xff0c 国内完全没有能称得上云服务器的 xff0c 很多小公司就是搞个VPS就叫云服务器了 以至于阿里云云服务器刚出来的时候 xff0
  • mac 下 使用 iterm2 配置及快键键使用

    mac 下 使用 iterm2 配置及快键键使用 标签 xff08 空格分隔 xff09 xff1a mac 之前介绍过一篇关于mac 下使用和配置 iterm2的blog 今天这篇稍微详细一点介绍 并且搭配 zsh zsh 会单独开一篇博
  • Java实现快速排序

    一 原理 快速排序算法通过多次比较和交换来实现排序 xff0c 其排序流程如下 xff1a 1 首先设定一个分界值 xff0c 通过该分界值将数组分成左右两部分 2 将大于或等于分界值的数据集中到数组右边 xff0c 小于分界值的数据集中到
  • C#,生信软件实践(03)——DNA数据库GenBank格式详解及转为FASTA序列格式的源代码

    1 GenBank 1 1 NCBI 美国国家生物技术信息中心 xff08 美国国立生物技术信息中心 xff09 NCBI xff08 美国国立生物技术信息中心 xff09 是在NIH的国立医学图书馆 xff08 NLM xff09 的一个
  • 【坑】zsh和oh-my-zsh卸载后导致无法登陆

    apt get remove zsh 然后断开终端 xff0c 就再也连不上了 xff0c 崩溃啊 xff01 以下登陆为www用户登陆 各种找 xff0c 到这里 https www cnblogs com EasonJim p 7863
  • 获取最近使用应用列表

    获取最近使用的应用列表需要使用到UsageStatsManager类 xff0c 还需要申请允许防御应用使用情况的权限 private void getPackagesInfo UsageStatsManager manager 61 Us
  • 使用MediaProjectionManager进行截屏

    最近项目中有用到远程截屏并上传截屏文件的需求 一开始使用的是以下方法进行截屏 xff1a private void screenshot 获取屏幕 View dView 61 getWindow getDecorView dView set
  • 安卓TV开发遇到的那些坑

    最近公司需要开发一个TV的luancher xff0c 就是那种纯物理按键的遥控 xff0c 没有触摸屏 xff0c 现在说说我踩得那些坑 xff08 其实布局和代码逻辑和正常的安卓应用差不多 xff09 1 焦点 焦点 焦点 xff0c
  • 安卓TV列表刷新时焦点自动变成第一个

    最近在开发安卓TV项目 xff0c 列表调用notifyDataSetChanged xff08 xff09 方法刷新数据时 xff0c 焦点自动就变成第一个子item去了 xff0c 查了半天发现用notifyItemRangeChang
  • 安卓蓝牙BLE设备通讯发送和接受超过20个字节的问题

    最近做的项目是手机端和BLE设备通讯 xff0c 而BLE设备又做了限制一次包只能传递20个字节的数据 xff0c 多了就得分包发送 xff0c 在这里记录一下如何解决这个问题 xff08 PS xff1a 之前链接什么的回调什么的 就不过

随机推荐

  • 获取最近运行应用方法和杀进程的方法

    最近公司的项目有个需求就是获取最近手机正在运行的进程 xff0c 以及杀掉进程 就是类似于安卓手机中的长按home键的效果 先说说获取最近手机正在运行的进程方法 xff1a 直接上代码 xff0c 代码中有注释 xff1a appbeans
  • 把自己的应用程序push至system/app下,把自己的app改成系统级别的app

    想把一个应用程序放入到系统文件夹下的话 xff0c 手机必须的root的情况下才能push进去 下面我就说说步骤吧 xff1a 1 先把手机用USB和电脑连接 2 如果电脑配置了adb的环境的话直接cmd xff0c 未配置环境的话找到sd
  • ConcurrentModificationException异常出现原因以及解决方法

    今天在开发过程中遇到一个异常叫ConcurrentModificationException xff0c 这个异常用我的白话翻译是叫同时修改异常 这个异常是怎么出现的呢 xff0c 先看看已下的代码 xff1a span class hlj
  • retrofit中使用body标签传RequestBody

    现在的Android开发者基本上都用过retrofit这个第三方网络请求库吧 xff01 xff01 xff01 网络请求中有get post delete和put等等请求方式 现在我们需要用到post请求 xff1a span class
  • SpringBoot配置拦截器拦截器使用

    拦截器介绍 Java中的拦截器是动态拦截 action 调用的对象 xff0c 然后提供了可以在 action 执行前后增加一些操作 xff0c 也可以在 action执行前停止操作 xff0c 功能与过滤器类似 xff0c 但是标准和实现
  • 百度地图上根据经纬度集合绘制行车轨迹

    以下是素材 最近项目中用到了根据一段线路的经纬度集合来在地图上播放该车辆的行驶轨迹的需求 下面我就讲一下我实现步骤 效果图如下 因为制作gif图为了控制大小去掉了很多帧 不必在意这些细节 嘿嘿 1 首先在界面上展示百度地图 这不是废话么 如
  • skip-GANomaly复现总结

    文章目录 skip GANomaly复现总结附MvTec数据集介绍实验结果总结谈谈我对于skip GANomaly的看法最后的感想 代码 skip GANomaly复现总结 附MvTec数据集 链接 xff1a https pan baid
  • YOLOv3 从入门到部署:(五)YOLOv3模型的部署(基于C++ opencv)

    文章目录 YOLOv3 从入门到部署 xff1a xff08 五 xff09 YOLOv3模型的部署 xff08 基于C 43 43 opencv xff09 目录关于opencv的DNN介绍代码讲解效果展示 YOLOv3 从入门到部署 x
  • 基于YOLO-fastest-xl的OCR

    文章目录 基于YOLO fastest xl的OCR项目介绍对于yolo fastest xl的结构的更改运行方法效果总结 基于YOLO fastest xl的OCR github链接https github com qqsuhao yol
  • Pytorch多GPU训练时使用hook提取模型中间层输出时与模型输入张量不在同一个GPU上的解决办法

    Pytorch多GPU训练时使用hook提取模型中间层输出时与模型输入张量不在同一个GPU上的解决办法 通常对于单卡训练的模型 xff0c 使用hook可以较为方便地提取出模型中间层输出 例如我们想要获取自定义模型DBL中的conv2d的输
  • 发布自己的Python包

    文章目录 发布自己的Python包第一步 xff1a 注册Pypi账号第二步 xff1a 准备本地文件第三部 xff1a 构建包并上传 发布自己的Python包 参考https packaging python org en latest
  • Python音频信号处理库函数librosa介绍

    文章目录 Python音频信号处理库函数librosa介绍 部分内容将陆续添加 介绍安装综述 xff08 库函数结构 xff09 Core IO and DSP xff08 核心输入输出功能和数字信号处理 xff09 Audio proce
  • python库函数之scipy.signal——滤波器设计

    文章目录 python库函数之scipy signal butter 函数参数设计模拟滤波器设计数字滤波器 2021 06 03 有位博主评论了这篇博客 xff08 评论已被删除 xff09 xff0c 特此说明 python库函数之sci
  • 使用python绘制短时傅里叶变换(STFT)频谱图(时频像)

    文章目录 使用python绘制短时傅里叶变换 xff08 STFT xff09 频谱图 xff08 时频像 xff09 使用python绘制短时傅里叶变换 xff08 STFT xff09 频谱图 xff08 时频像 xff09 使用sci
  • python csv文件数据写入和读取(适用于超大数据量)

    文章目录 python csv文件数据写入和读取 xff08 适用于超大数据量 xff09 python csv文件数据写入和读取 xff08 适用于超大数据量 xff09 一般情况下由于我们使用的数据量比较小 xff0c 因此可以将数据一
  • CentOS 开启端口方法

    查看已经开放的端口 xff1a firewall cmd list ports 查看防火墙状态 xff1a firewall cmd state 开启防火墙 xff1a systemctl start firewalld service 开
  • opencv3颜色识别(C++)

    文章目录 opencv3颜色识别 C 43 43 目标思路1 读取图像2 对比度调整 xff08 直方图均衡 xff09 3 RGB颜色分类4 形态学去噪声 代码结果参考 opencv3颜色识别 C 43 43 目标 给定一幅图像 xff0
  • 小区物业管理系统

    技术 xff1a 小区物业管理 ASP技术 B S 模式 SQL SERVER 2008 摘要 xff1a 随着市场经济的发展和人们生活水平的提高 xff0c 住宅小区已经成为人们安家置业的首选 xff0c 小区业主不但对住宅的本身的美观
  • java判断字符串是否为空的方法总结

    以下是java 判断字符串是否为空的四种方法 方法一 最多人使用的一个方法 直观 方便 但效率很低 if s 61 61 null 34 34 equals s 方法二 比较字符串长度 效率高 是我知道的最好一个方法 if s 61 61
  • 用Python的networkx绘制精美网络图

    最近因为数学建模3天速成Python 然后做了一道网络的题 xff0c 要画网络图 在网上找了一些 xff0c 发现都是一些很基础的丑陋红点图 xff0c 并且关于网络的一些算法也没有讲 xff0c 于是自己进http networkx g