一、简单使用示例

输入参数主要包括:
PointsName: 列表结构,表示图各个顶点的序号(用于标记注释)
AdjacencyMatrix: 二维列表结构,表示图的邻接矩阵
注:(设计时主要考虑的有向图,如果表示无向图,权值的标注需要改一下)

if __name__ == '__main__':# 示例a = [1, 2, 3, 4]  # 点的序号,用于标注b = [[0, 3, 0, 6], [1, 0, 1, 2], [0, 4, 0, 0], [2, 1, 0, 0]]  # 邻接矩阵AdjacencyMatrixToGraph(a, b)

运行结果:

二、主要函数

import matplotlib.pyplot as plt
import numpy as npdef AdjacencyMatrixToGraph(PointsName, AdjacencyMatrix):"""根据邻接矩阵绘制图结构:param PointsName: 列表结构,表示图各个顶点的序号(用于标记注释):param AdjacencyMatrix: 二维列表结构,表示图的邻接矩阵"""num = len(PointsName)fig = plt.figure()ax = fig.add_subplot(111)xlim = [-1.1, 1.1]ylim = [-1.1, 1.1]ax.set(xlim=xlim, ylim=ylim)  # 初始化坐标系theta = 2 * np.pi / numx = []y = []for i in range(num):x.append(np.cos(i * theta))y.append(np.sin(i * theta))  # 分配点位ax.scatter(x, y, color='b', marker='.')for i in range(num):ax.annotate(PointsName[i], (x[i], y[i]))  # 绘制点并加标注for i in range(num):for j in range(num):if AdjacencyMatrix[i][j]:  # 如果有连线x_temp = [x[i], x[j]]y_temp = [y[i], y[j]]x_text = (x_temp[0] * 2 + x_temp[1]) / 3y_text = (y_temp[0] * 2 + y_temp[1]) / 3if i == j:x_text -= 0.05y_text -= 0.05ax.plot(x_temp, y_temp, linewidth=0.5, color='red')ax.text(x_text, y_text, "W:"+str(AdjacencyMatrix[i][j]))  # 连线加权注释ax.axis('off')  # 不显示坐标轴plt.show()

三、原始代码

import matplotlib.pyplot as plt
import numpy as npdef AdjacencyMatrixToGraph(PointsName, AdjacencyMatrix):"""根据邻接矩阵绘制图结构:param PointsName: 列表结构,表示图各个顶点的序号(用于标记注释):param AdjacencyMatrix: 二维列表结构,表示图的邻接矩阵"""num = len(PointsName)fig = plt.figure()ax = fig.add_subplot(111)xlim = [-1.1, 1.1]ylim = [-1.1, 1.1]ax.set(xlim=xlim, ylim=ylim)  # 初始化坐标系theta = 2 * np.pi / numx = []y = []for i in range(num):x.append(np.cos(i * theta))y.append(np.sin(i * theta))  # 分配点位ax.scatter(x, y, color='b', marker='.')for i in range(num):ax.annotate(PointsName[i], (x[i], y[i]))  # 绘制点并加标注for i in range(num):for j in range(num):if AdjacencyMatrix[i][j]:  # 如果有连线x_temp = [x[i], x[j]]y_temp = [y[i], y[j]]x_text = (x_temp[0] * 2 + x_temp[1]) / 3y_text = (y_temp[0] * 2 + y_temp[1]) / 3if i == j:x_text -= 0.05y_text -= 0.05ax.plot(x_temp, y_temp, linewidth=0.5, color='red')ax.text(x_text, y_text, "W:"+str(AdjacencyMatrix[i][j]))  # 连线加权注释ax.axis('off')  # 不显示坐标轴plt.show()if __name__ == '__main__':# 示例a = [1, 2, 3, 4]  # 点的序号,用于标注b = [[0, 3, 0, 6], [1, 0, 1, 2], [0, 4, 0, 0], [2, 1, 0, 0]]  # 邻接矩阵AdjacencyMatrixToGraph(a, b)

给出数据结构中图的邻接矩阵,利用python+matplotlib绘图相关推荐

  1. python制作雷达图_如何利用Python matplotlib绘制雷达图

    本篇文章介绍使用matplotlib绘制雷达图. 雷达图也被称为网络图,蜘蛛图,星图,蜘蛛网图,是一个不规则的多边形.雷达图可以形象地展示相同事物的多维指标,雷达图几乎随处可见,应用场景非常多. 一. ...

  2. 利用python—matplotlib绘制股票K线图

    利用python-matplotlib绘制股票K线图 成品展示: 用Python绘制股票K线图并不复杂,不过得做好一些准备工作例如相关库的安装,库的引入.日期格式的调整and表格转换 文章目录 利用p ...

  3. 科研论文绘图:ppt, word,latex,python matplotlib绘图 ,矢量图,高清图,放大不失真

    目录 1. 用PPT绘图,保存为高清图片,不推荐使用,方法链接 2. 用PPT绘图,保存为emf矢量图,适合插入word,方法链接 3. 用PPT画图,保存为eps文件,适合插入latex,方法链接 ...

  4. 利用Python海龟绘图画一个世界杯的足球

    利用Python海龟绘图画一个世界杯的足球 花有重开日 人无再少年 四年一次的世界杯快要结束,为了纪念此次世界杯,特意用Python画了一个足球. 1.设计思路以及实现效果 世界杯足球实现思路: 首先 ...

  5. python画车辆轨迹图_如何利用 Python 绘制酷炫的 车辆轨迹 — 速度时空图?三维数据用二维图像呈现...

    说明:本文系交通攻城狮原创文章,如需转载请私信联系,侵权必究. 2020,第 30 期,编程笔记 建议直接阅读精编版:如何利用 Python 绘制酷炫的 车辆轨迹 - 速度时空图?三维数据用二维图像呈 ...

  6. C#中实现文本读取数据并画出数据折线图

    1.题目 从文本文件中读取数据,数据格式为:空格分隔:每一行为一组数据,依次读取出来,之后将数据存于数组中:继而将其显示至图形中 2.完整代码 using System; using System.C ...

  7. python 桑基图 地理坐标_利用Python+Excel制作桑基(Sankey)图

    利用Python+Excel制作桑基(Sankey)图 桑基图的简介 桑基图 (Sankey  Diagram),是一种特定类型的流图,用于描述一组值到另一组值的流向.下图为1869年,查尔斯米纳德( ...

  8. python为啥爬取数据会有重复_利用Python来爬取“吃鸡”数据,为什么别人能吃鸡?...

    原标题:利用Python来爬取"吃鸡"数据,为什么别人能吃鸡? 首先,神装镇楼 背景 最近老板爱上了吃鸡(手游:全军出击),经常拉着我们开黑,只能放弃午休的时间,陪老板在沙漠里奔波 ...

  9. access数据放到list中_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

最新文章

  1. 八年级下册册计算机计划,粤教版(B版)信息技术八年级下册教学工作计划
  2. 两个不同网段的局域网如何互通_不同网段之间如何通信?
  3. python相似图片识别_Python+Opencv识别两张相似图片
  4. Git 别名(分布式版本控制系统)
  5. 一文看懂机器视觉工业相机与普通相机的区别
  6. 【SpringBoot_ANNOTATIONS】AOP 01 AOP功能测试
  7. 黄山学院计算机作业管理系统,在线作业管理系统
  8. 在代码中将CAD图形转换为PDF!Aspose.CAD轻松搞定
  9. 用单片机测量流体流速的_一种测量管道内流体流速的传感器的制作方法
  10. 标识符的命名规则和规范
  11. Less 颜色操作函数Mix的计算方法
  12. 魔兽世界编程宝典(4-1)
  13. 寄给J.Keisler教授的一份电子生日贺卡(修正版)
  14. 企业智能化管理固定资产的新思路
  15. JAVA实现短信接口的调用
  16. 图卷积神经网络GCN原理+图结构学习+GAT+VGAE
  17. MQTT协议详解,非常易懂
  18. 计算dpi公式及各主流分辨率介绍
  19. 幸福 兴趣 工作 心态
  20. redmine插件列表

热门文章

  1. 凸优化笔记10(罚函数法-内点罚函数、外点罚函数)
  2. ubuntu16.4长按键盘中的键才能打字
  3. 蚂蚁mPaaS框架控制台打印 原生与h5交互数据 和 RPC接口返回数据 都是Unicode乱码如何处理
  4. 脉冲神经网络【转载】
  5. 支持指令流水的计算机系统设计与实现【100010365】
  6. C string.h
  7. 一加将在欧洲首发5G手机,网友:比华为、小米还快
  8. 油漆烘烤消泡剂死缠烂打的泡沫终于放手了
  9. 求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。 例如:2+22+222+2222+22222(n=5),n由键盘输入,而a由程序设定为2。
  10. 76个偏门小生意,利润高不起眼的小生意