用python画关系网络图-使用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简单教程了,大概是这个样子

20191121172503.jpg

三、绘制精美的图

如果你想要的图是这样的

20191121172511.jpg

或是这样的

20191121172522.jpg

还是这样的

20191121172537.jpg

20191121172545.jpg

可以继续看下去

首先要掌握两个方法

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

alpha:float

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

cmap:Matplotlib色图

色彩映射节点的强度(默认=无)

vmin,vmax:float

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

线宽:[无|标量|序列]

符号边框的线宽(默认值= 1.0)

label:[无|串]

图例的标签

然后基本上所有networkx的超酷精美图的源码你都能快速弄懂了。

20191121172557.jpg

以上这篇使用Python的networkx绘制精美网络图教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

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

用python画关系网络图-使用Python的networkx绘制精美网络图教程 的相关文章

  • 软件工程师校招面试救急包

    LeetCode牛人总结 xff08 手撕代码前看看 xff0c 抱佛脚 xff09 https github com labuladong fucking algorithm blob master README md 剑指offer x
  • 微信SDK中含有的支付功能怎么去掉?

    一 说在前面的话 这两天遇到一个特别让我DT的问题 xff0c 估计大家通过标题就能知道问题了 没错 xff0c 就是在应用中集成了微信SDK后 xff0c 它自动支持了微信分享 登录 收藏 支付等功能 这一点没啥 xff0c TM的关键点
  • Android中图片的镂空效果(不规则图形的镂空)

    一 说在前面的话 我们在做新手引导时 xff0c 经常会遇到凸显某一块功能时需求 xff0c 类似于下图 xff1a 看到这个功能点可能会有点头大 xff0c 不过好在Android为我们提供一个美好的工具 xff1a PorterDuff
  • 利用三层交换机实现VLAN间路由

    原理概述 xff1a VLAN将一个物理的LAN在逻辑上划分成多个广播域 VLAN内的主机间可以直接通信 xff0c 而VLAN间不能直接互通 在现实网络中 xff0c 经常会遇到需要跨VLAN相互访问的情况 xff0c 工程师通常会选择一
  • Failed to resolve attribute at index 6: TypedValue{t=0x2/d=0x7f0400cd a=7 r=0x7f06006e}

    今天在开发时 xff0c 遇到一个程序的Bug xff0c 记录一下 在Dialog中展示一个布局 xff0c 布局中包含了TextView报了下面的错误 xff0c 最开始还以为是颜色设置的问题 xff0c 反复核对了一下颜色设置并没有问
  • TextView的TextColor中使用selector的问题

    在TextView中如果设置选中 点击 获取焦点时 xff0c 文字颜色发生改变时 xff0c 一般我们会通过代码中设置 不过Android给我们提供了一个更简洁的方式 xff0c 就是通过selector去改变 只需要在Res目录下创建一
  • 彻底理解Java中堆和栈的区别

    1 概述 在Java中 xff0c 内存分为两部分 xff0c 一种是堆内存 xff0c 另一种就是栈内存 2 Java中变量在内存中的分配 1 类变量 static修饰的变量 xff1a 在程序加载时系统就为它在堆中开辟了内存 xff0c
  • 深入了解多线程的原理

    说在前面的话 使用多线程的目的 在多个CPU核心下 xff0c 多线程的好处是显而易见的 xff0c 不然多个CPU核心只跑一个线程其他的核心就都浪费了即便不考虑多核心 xff0c 在单核下 xff0c 多线程也是有意义的 xff0c 因为
  • An operation is not implemented: not implemented被坑之路[Kotlin]

    吐槽一下 xff0c 程序猿的辛酸史 今天在开发新项目时 xff0c 首次使用了Kotlin语言 xff0c 对于之前只在纸上谈兵 xff0c 未在项目中使用过的码农 xff0c 很是一脸懵逼 但是迫于公司的要求 xff0c 只能硬头皮冲吧
  • 开发Android Camera—使用Kotlin语言,完成第一个自定义相机

    对于首次使用Kotlin语言开发 xff0c 在网上苦于寻找不到Kotlin语言编写的相机代码 xff0c 故写下这篇博客 好了 xff0c 咱们进入主题 在Android 5 0 xff08 SDK 21 xff09 中 xff0c Go
  • Android ConstraintLayout性能分析

    这篇文件是讲述ConstraintLayout性能的分析 xff0c 如果对于使用ConstraintLayout不是很了解的情况下 xff0c 请查看Android ConstraintLayout完全解析和性能分析 xff08 章节一
  • 针对drawableStart(Top、End、Bottom)边距的设置-Android布局技巧

    作为Android程序猿 xff0c 在开发布局的过程中 xff0c 我们的宗旨是能用一个View完成的效果 xff0c 绝不会用两个View或者嵌套View来完成 至于它的好处 xff0c 就不言而喻了吧 不懂的自行到网上看 xff0c
  • markdown基本语法

    转载自 Cmd 技术渲染的沙箱页面 xff0c 点击此处编写自己的文档 Cmd Markdown 简明语法手册 标签 xff1a Cmd Markdown 1 斜体和粗体 使用 和 表示斜体和粗体 示例 xff1a 这是 斜体 xff0c
  • unix环境高级编程——UNIX体系架构

    本期主题 xff1a unix环境高级编程 UNIX体系架构 文件IO 0 初始UNIX1 系统调用2 库函数2 1 C语言的运行库 3 shell 0 初始UNIX 这里略过unix的历史不讲 xff0c 网上有比较详细的资料 我们可以将
  • HTML基础<1>

    一 图片标签与超链接 lt br gt 是空格 lt hr gt 是横线 lt img src 61 34 34 width 61 34 34 height 61 34 34 gt lt a href 61 34 https www bai
  • Android Lottie动画

    Android Lottie动画 在Android中 xff0c 往往UI会让写一些动画效果 xff0c 比如启动页心形跳动 xff0c 返回效果等 一般我们在项目中常用的动画无非是以下几种 xff1a 普通动画帧动画属性动画通过改变Lay
  • 我与人工智能的故事

    本文作者 xff1a 诸葛越 前 言 人工智能的三次浪潮 2018年年初 xff0c 招聘季正如火如荼地进行 xff0c 而 数据科学家 和 算法工程师 绝对算得上热门职业 人工智能 机器学习 深度学习 建模 卷积神经网络 等关键词 xff
  • GitHub安装和使用

    GitHub安装和使用 GitHub是一个基于git的代码托管平台 xff0c 付费用户可以建私人仓库 xff0c 一般的免费用户只能使用公共仓库 xff0c 也就是代码要公开 Github 由Chris Wanstrath PJ Hyet
  • Linux系统java安装

    1 下载 进入Oracle官网进行JDK下载 2 创建目录 span class token function mkdir span usr java span class token function cd span usr java 3
  • 过年之抢红包算法

    前言 昨天是大年初一 xff0c 怎么说呢 xff0c 因为在读大学 xff0c 没有出来工作 xff0c 所以昨晚也是陆陆续续有收到一些红包 然后想起自己对算法感兴趣 xff0c 以前也看过一些公众号有讲过抢红包算法 xff0c 今天就更

随机推荐

  • DL基本知识(七)FTRL优化器

    契机 最近工作方向为缩减模型规模 xff0c 切入点为L1正则化 xff0c 选择该切入点的理由如下 xff0c 众所周知 xff0c L1正则化能令权重矩阵更稀疏 在推荐系统中特征多为embedding xff0c 权重矩阵稀疏意味着一些
  • 生产者消费者问题的C语言实现

    实验六 生产者 消费者问题实验 一 实验目的 掌握Linux下生产者 消费者问题算法的实现 二 实验原理 1 clone系统调用 xff1a 功能 xff1a 创建一个轻进程或线程 用法 xff1a intclone int fn void
  • 项目中使用ts的一些技巧

    项目上使用ts一年多了 xff0c 一边写 xff0c 一边看 xff0c 总结了一些小技巧 xff0c 写了一些分享给大家 xff0c 如果对你有所帮助就转评赞三连来一个 xff0c 那么我们开始今天的正题 xff1b 1 type联合类
  • 史上最全的ubuntu服务器搭建环境教程~~~

    ubuntu服务器搭建环境 1 先安装xshell xff1a 远程服务器连接 xff08 取代直接在浏览器 上 访问 xff09 2 安装xftp xff08 ftp文件传输 xff09 直接双击红色圈圈即可 3 安装mysql数据库 x
  • ubuntu server 18.04 启用root账户自动登录

    新安装Ubuntu server 18 04 后 xff0c 不能使用root账户进行ssh登录 解决方案 设置root用户密码 sudo passwd root 修改文件 usr share lightdm lightdm conf d
  • THML基础<2>

    一 基本的JavaScript命令document write 打印指定的文本内容到页面上 alert 弹出框 lt script type 61 34 text javascript 34 gt document write 34 Hel
  • 【机翻】Contrastive Learning based Hybrid Networks for Long-Tailed Image Classification

    Contrastive Learning based Hybrid Networks for Long Tailed Image Classification Abstract 在长尾图像分类中 xff0c 判别式图像表示的学习起着非常重要
  • 视图绑定(ViewBinding )与数据绑定(Databinding)

    视图绑定 xff08 ViewBinding xff09 与数据绑定 xff08 Databinding xff09 什么是ViewBinding viewbinding是android jetpack的一个特性 xff0c 通过viewb
  • 百度移动端面试回忆

    百度一面 xff1a 1 自我介绍 2 悲观锁和乐观锁 乐观锁 xff1a 总是认为不会产生并发问题 xff0c 每次去取数据的时候总认为不会有其他线程对数据进行修改 xff0c 因此不会上锁 xff0c 但是在更新时会判断其他线程在这之前
  • Spring知识点整理

    目录 Spring是什么 xff1f 对AOP的理解 解释一下Spring AOP里面的几个名词 Spring AOP 和AspectJ AOP有什么区别 JDK动态代理和CGLIB动态代理的区别 JavaConfig方式如何启用AOP 如
  • Method threw ‘java.lang.IllegalStateException‘ exception. Cannot evaluate org.apache.hadoop.mapreduc

    在本地调试hadoop mapreduc时断点看到这个信息 xff0c 且程序执行不成功 xff0c 以为是这个问题导致的 xff0c 网上查了很久也没有解决办法 xff0c 后来发现这个并不影响主要功能 如果不想看到它可以在idea进行配
  • Thread.sleep()关于让不让出cpu时间片

    1 证明 思路 xff1a 反证法 假如Thread sleep xff0c 不让出cpu时间片 xff0c 创建1000个线程 xff0c 每个线程执行sleep 方法 则cpu的使用率一定很高 xff0c 贴上代码 xff1a publ
  • 阿里巴巴校园招聘2019面试总结

    写在前面 面的岗位是c 43 43 开发 xff0c 二面跪了 xff0c 但依然想些出来分享一下 博主4月份开始着手找实习 xff0c 期间面过两次阿里都挂在第一面 xff0c 7月份至今在科大讯飞实习 xff0c 这期间内推阿里 xff
  • YY直播黑盒测试工程师笔试题

    1 请写出二进制数10111101对应的八进制 十六进制 十进制 2 黑盒测试用例的设计方法有哪些 xff1f 3 你所在项目用到的互联网协议有哪些 xff1f 请列举 4 数据库DB有两张表 xff0c 一张学生信息表Student xf
  • 如何判断是客户端问题还是服务器问题

    举个例子 xff0c 下载了个词典PC客户端 xff0c 发现词典上的一些解析出现是HTML代码 xff0c 例如 lt b gt lt b gt 什么的 xff0c 用fiddler抓包一下相关的接口jsonapi xff0c 发现相应的
  • U盘系统、格式化等问题的解决办法

    一 U盘快速格式化与正常格式化区别 1 快速格式化时间非常短 基本上瞬间完成 xff0c 如果硬盘有坏道 xff0c 不会出现任何提示 正常格式化时间非常的长 1 2 3小时不等 xff0c 但会在格式化的时候全面检测硬盘 xff0c 如果
  • python经典书籍推荐-7本经典的Python书籍,你都读过了么?

    许多程序员都认为Python是最适合作为入门的编程语言 xff0c 而有的程序员却认为Python是你应该学的最后一门编程语言 xff0c 无论如何 xff0c 毋庸置疑Python是一门非常流行的编程语言 xff0c 根据TIOBE In
  • python画轨迹曲线-matplotlib绘制随机行走轨迹图

    coding utf 8 author 61 39 pythonwu 39 date 61 34 2018 6 15 16 09 34 from random import choice randint import matplotlib
  • python游戏编程入门书籍推荐-游戏编程入门书籍推荐:想要游戏编程尽快入门这些书不要错过...

    游戏编程一直都是编程之中的一大热点 xff0c 这也是由于游戏本身的火热造成的结果 xff0c 所以每年都有很多人在关注着游戏编程 介于此小编今天就来将一些好的游戏编程入门书籍推荐给大家 xff0c 希望对想要了解和学习游戏编程的朋友能够有
  • 用python画关系网络图-使用Python的networkx绘制精美网络图教程

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