使用Python,networkx绘制有向层级结构图

使用Python,networkx绘制有向层级结构图

  • 1. 效果图
  • 2. 源码
    • 2.1 tree.txt
    • 2.2 pyNetworkx.py
    • 参考

上一篇介绍了:1. 使用Python,networkx对卡勒德胡赛尼三部曲之《群山回唱》人物关系图谱绘制
当前博客介绍: 2. 使用Python,networkx绘制有向层级结构图
下一篇将介绍: 3. 使用Python,maplotlib绘制树型有向层级结构图

1. 效果图

可以分别绘制圆型布局、随机布局、Spring布局、贝壳布局、星型布局图

圆型布局图如下,并且对部分点设置不同颜色不同大小:
在这里插入图片描述

随机布局图如下,并且对部分点设置不同颜色不同大小:
在这里插入图片描述

Spring布局效果图如下,并且对部分点设置不同颜色不同大小:
在这里插入图片描述

贝壳布局图如下,并且对部分点设置不同颜色不同大小:
在这里插入图片描述

星型布局图,并且对部分点设置不同颜色不同大小:
在这里插入图片描述

2. 源码

2.1 tree.txt

A,B,a-b
A,C,hello
A,D,a-d
B,E,good
B,F,b-f
B,G,b-g
C,H,good
C,I,c-i
H,J,h-j
J,K,bad
J,Z,j-z
E,L,bad

2.2 pyNetworkx.py

# python pyNetworkx.py
# 对层级结构图谱进行绘制import sysimport matplotlib.pyplot as plt
import networkx as nxprint(sys.getdefaultencoding())
print(plt.rcParams['backend'])plt.rcParams['backend'] = 'TkAgg'# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsenodes = []
edegs = []
edegLabels = dict()
with open("res/tree.txt", 'r', encoding='utf-8', errors='ignore') as f:data = f.readlines()for i, line in enumerate(data):print(i, line.replace("\n", ""))nodes.append(line.split(",")[0])nodes.append(line.split(",")[1])edegs.append((line.split(",")[0], line.split(",")[1]))edegLabels[(line.split(",")[0], line.split(",")[1])] = line.split(",")[2]nodes = list(set(nodes))print('nodes: ', nodes)print(edegs)original_graph = nx.DiGraph()node_sizes = [200 if i % 6 == 0 else 50 for i, n in enumerate(nodes)]
node_colors = ["green" if i % 5 == 0 else "blue" if i % 6 == 0 else "red" for i, n in enumerate(nodes)]print('nodeSize: ', node_sizes)original_graph.add_nodes_from(nodes)
original_graph.add_edges_from(edegs)base_options = dict(with_labels=True, edgecolors="blue")# 圆型布局、随机布局、Spring布局、贝壳布局、星型布局
posList = [nx.circular_layout(original_graph), nx.random_layout(original_graph), nx.spring_layout(original_graph),nx.shell_layout(original_graph), nx.spectral_layout(original_graph)]for j, pos1 in enumerate(posList):print(pos1)fig, ax = plt.subplots(figsize=(8, 8))plt.title(str(j) + " Original (%s edges)" % original_graph.number_of_edges())nx.draw_networkx(original_graph, pos=pos1, node_color=node_colors, **base_options)# 绘制标签nx.draw_networkx_edge_labels(original_graph, pos=pos1, edge_labels=edegLabels)# 缩放图表以保证标签可读# ax.margins(0.1, 0.05)# plt.tight_layout()plt.show()

参考

  • 使用Python,networkx对卡勒德胡赛尼三部曲之——《群山回唱》人物关系图谱绘制
  • https://networkx.org/documentation/latest/reference/drawing.html
  • https://blog.csdn.net/qq_45956730/article/details/127352658

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/710029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仿牛客网项目---社区首页的开发实现

从今天开始我们来写一个新项目,这个项目是一个完整的校园论坛的项目。主要功能模块:用户登录注册,帖子发布和热帖排行,点赞关注,发送私信,消息通知,社区搜索等。这篇文章我们先试着写一下用户的…

个人玩航拍,如何申请无人机空域?

我们在《年会不能停》一文中,有分享我们在西岭雪山用无人机拍摄的照片和视频,有兴趣可以去回顾。 春节的时候,趁着回老家一趟,又将无人机带了回去,计划拍一下老家的风景。 原本以为穷乡僻壤的地方可以随便飞&#xf…

Javaweb之SpringBootWeb案例之 SpringBoot原理的详细解析

3. SpringBoot原理 SpringBoot使我们能够集中精力地去关注业务功能的开发,而不用过多地关注框架本身的配置使用。而我们前面所讲解的都是面向应用层面的技术,接下来我们开始学习SpringBoot的原理,这部分内容偏向于底层的原理分析。 在剖析Sp…

Go开发 入门以VSCode为例

一、Go环境搭建 1.1 安装 进入Golang官网 https://go.dev,点击 Download 若无法打开网页可以使用国内的Go语言中文网 https://studygolang.com/dl 进入下载 找到合适的平台点击链接下载即可(这里以Windows距离) 下载完成后 Next Next 安…

threejs 大场景下,对小模型进行贴图处理

接上篇小模型的删除☞threeJS 大模型中对小模型进行删除-CSDN博客 针对已有模型,根据数据状态进行贴图处理,例如:机房内电脑告警状态、电脑开关机状态下的不同状态贴图等 示例模型还是以丛林小屋为例:针对该模型中的树干进行贴图…

Android进阶之路 - RecyclerView停止滑动后Item自动居中(SnapHelper辅助类)

之前一直没注意 SnapHelper 辅助类的功能,去年的时候看到项目中仅通过俩行代码设置 RecyclerView 后就提升了用户体验,觉得还是很有必要了解一下,尝试过后才发现其 PagerSnapHelper、LinearSnapHelper 子类可以作用于不同场景,且听…

加速AI测试领域的进化,顶尖专家与名校教授强强联合,助你快速成为人工智能测试领域的精英

随着人工智能在各行各业的广泛应用,学习并掌握AI技术在软件测试中的应用变得至关重要。不仅能使你跟上行业的发展趋势,还能提升你的竞争力。而且,市场对具备AI测试技能的测试工程师的需求正日益增长,这使得掌握这些技能能够帮助你…

走进中国电车领跑企业“NI蔚来”丨共谋商业,共话ESG

期盼与热望将冬季的寒冷拂去,复旦大学-华盛顿大学EMBA项目迎来了一位新朋友——美国圣路易斯华盛顿大学奥林商学院的新任院长Michael Mazzeo教授。Mazzeo院长在上海进行了为期3天的访问。这里是 Mazzeo院长上任后国际访问交流之旅的第一站。      漫步校园&…

【Python_Zebra斑马打印机编程学习笔记(四)】ZPL的一些简单指令

ZPL的一些简单指令 ZPL的一些简单指令前言一、ZPL 介绍二、ZPL 语法解析1、标签开始、标签结束2、标签原点位置设置3、标签长度设置4、标签文本打印深度设置5、标签打印宽度设置6、标签方向设置7、标签元素定位8、标签绘制矩形9、标签输入字段10、标签设置字段字体、大小11、标…

Go 互斥锁的实现原理?

Go sync包提供了两种锁类型:互斥锁sync.Mutex 和 读写互斥锁sync.RWMutex,都属于悲观锁。 概念 Mutex是互斥锁,当一个 goroutine 获得了锁后,其他 goroutine 不能获取锁(只能存在一个写者或读者,不能同时…

STM32 IIC协议基础概念

文章目录 前言一、IIC协议介绍二、IIC硬件框图和程序层次三、IIC协议1.IIC协议通信流程2.IIC的引脚为什么需要加入上拉电阻3.IIC的引脚为什么需要配置为开漏输出 四、STM32 IIC硬件结构总结 前言 本篇文章将带大家学习IIC通信协议的一些基础概念和使用。 一、IIC协议介绍 I2…

jsjiami.v7关于js加密运行环境的探索

浏览器环境、Node.js 环境和 vm2 环境之间存在一些区别,包括全局对象、核心模块和一些环境特定的 API。下面是一些区别的简要概述,以及一些代码示例来突显它们之间的不同。 1. 浏览器环境: 全局对象: 浏览器环境: 全…

数据结构·栈和队列

1. 栈 1.1 栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶,另一端称为栈底。 栈中的数据元素遵守 后进先出 LIFO(Last In First Out)的原则,后进来的数…

YOLOv8 DeepSORT实现智能交通监控-改进yolo单目测距及速度测量-流量计数

YOLOv8 DeepSORT是一种基于目标检测和跟踪技术的智能交通监控系统。它基于YOLOv8,通过加入DeepSORT算法实现目标跟踪,同时还改进了YOLOv8的单目测距及速度测量技术和流量计数功能。 该系统可以通过摄像头或视频源实时捕获图像,并自动检测和跟…

web安全学习笔记【20】——信息打点(10)

信息打点-公众号服务&Github监控&供应链&网盘泄漏&证书图标邮箱资产 #知识点: 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 ------------------------------------ 1、开源-CMS指纹…

【刷题】 Leetcode 1022.从根到叶的二进制数之和

刷题 1022.从根到叶的二进制数之和题目描述:思路一(dfs深搜万能版)思路二 (栈迭代巧解版)总结 Thanks♪(・ω・)ノ谢谢阅读!!!下一篇文章见&#xff…

SpringBoot 自定义注解实现操作日志记录

文章目录 前言正文一、项目结构介绍二、核心类2.1 核心注解2.1.1 CLog 日志注解2.1.2 ProcessorBean 处理器bean 2.2 切面类2.3 自定义线程池2.4 工具类2.4.1 管理者工具类 2.5 测试2.5.1 订单创建处理器2.5.2 订单管理者2.5.3 订单控制器2.5.4 测试报文2.5.5 测试结果 附录1、…

【Java题】调整奇数位于偶数之前(超简单版)

题目: 调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。 如数组:[1,2,3,4,5,6,7,8,9] 调整后可能是:[1, 9,3,7,5, 6, 4, 8, 2] 代码: import java.util.Arrays;public class Main {public static voi…

将python程序打包为exe格式

1. 安装pyinstaller winr打开命令窗口 输入: pip install pyinstaller输入命令后会自动安装pyinstaller 2. 打包 进入你的代码所在位置,输入cmd 在弹出的窗口中输入 pyinstaller --onefile your_script.pyyour_script.py修改为你需要打包的程序名字 …

ElasticSearch架构介绍及原理解析

ElasticSearch架构介绍及原理解析文章目录 一、Elasticsearch是什么?1.简介2.历史与发展3.有关概念1.cluster2.shards3.replicas4.recovery5.river6.gateway7.discovery.zen8.Transport 4.安装 二、ElasticSearch架构介绍及原理解析1.基本架构1.1 进程节点1.2 负载均…