第二十八章:Python可视化图表扩展-和弦图、旭日图、六边形箱图、桑基图和主题流图

一、引言

     在数据可视化领域,除了常见的折线图、柱状图和散点图,还有一些高级图表类型可以帮助我们更直观地展示复杂数据关系。本文将介绍五种扩展图表:和弦图、旭日图、六边形箱图、桑基图和主题流图。这些图表在展示数据关系、层次结构和流量分布方面具有独特的优势。资源绑定附上完整资料供读者参考学习!

二、和弦图

2.1 什么是和弦图?

    和弦图(Chord Diagram)是一种用于展示矩阵数据的可视化工具,通常用于展示不同节点之间的关系强度。它通过弧线连接节点,弧线的宽度表示关系的强度

2.2 示例代码

import plotly.graph_objects as go# 创建数据
nodes = ['A', 'B', 'C', 'D', 'E']
matrix = [[0, 10, 5, 3, 2],[10, 0, 8, 4, 1],[5, 8, 0, 6, 7],[3, 4, 6, 0, 9],[2, 1, 7, 9, 0]]# 创建和弦图
fig = go.Figure(data=go.Sankey(node=dict(pad=15,thickness=20,line=dict(color="black", width=0.5),label=nodes,color="blue"),link=dict(source=[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4],target=[1, 2, 3, 4, 0, 2, 3, 4, 0, 1, 3, 4, 0, 1, 2, 4, 0, 1, 2, 3],value=[10, 5, 3, 2, 10, 8, 4, 1, 5, 8, 6, 7, 3, 4, 6, 9, 2, 1, 7, 9])
))# 显示图表
fig.show()

2.3 说明

  • 节点和矩阵:节点是图中的实体,矩阵表示节点之间的关系强度

  • 颜色映射:使用cmapedge_cmap设置颜色映射

三、旭日图

3.1 什么是旭日图?

    旭日图(Sunburst Chart)是一种层次结构可视化工具,用于展示层次数据。它通过环形扇区展示数据的层次关系,每个扇区的大小表示数据的值

3.2 示例代码

import matplotlib.pyplot as plt
import numpy as np
import plotly.express as px# 创建数据
data = dict(character=["Eve", "Cain", "Seth", "Enos", "Noam", "Abel", "Awan", "Enoch", "Azura"],parent=["", "Eve", "Eve", "Seth", "Seth", "Eve", "Eve", "Awan", "Eve"],value=[10, 14, 12, 10, 2, 6, 6, 4, 4]
)# 创建旭日图
fig = px.sunburst(data,names='character',parents='parent',values='value',title='旭日图示例'
)# 显示图表
fig.show()

3.3 说明

  • 层次数据:通过namesparents参数定义层次关系

  • :通过values参数设置每个节点的大小

四、六边形箱图

4.1 什么是六边形箱图?

    六边形箱图(Hexbin Plot)是一种用于展示二维数据密度的图表。它将数据点划分到六边形网格中,并通过颜色深浅表示密度

4.2 示例代码

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 创建数据
x = np.random.normal(0, 1, 1000)
y = np.random.normal(0, 1, 1000)# 创建六边形箱图
plt.figure(figsize=(10, 8))
plt.hexbin(x, y, gridsize=30, cmap="mako")
plt.title('六边形箱图示例')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.colorbar(label='密度')
plt.show()

4.3 说明

  • 数据分布:使用histplot函数创建六边形箱图

  • 颜色映射:通过cmap参数设置颜色映射

五、桑基图

5.1 什么是桑基图?

    桑基图(Sankey Diagram)是一种用于展示流量或转移的图表。它通过带状连接展示不同节点之间的流量大小。

5.2 示例代码

import plotly.graph_objects as go
labels = ["Coal", "Solar", "Wind", "Nuclear", "Residential", "Industrial", "Commercial"]
source = [0, 1, 2, 3, 0, 1, 2, 3]
target = [4, 4, 4, 4, 5, 5, 5, 5]
value = [25, 10, 40, 20, 30, 15, 25, 35]
#Create the Sankey diagram object
fig = go.Figure(data=[go.Sankey(node=dict(pad=15,thickness=20,line=dict(color="black", width=0.5),label=labels),link=dict(source=source,target=target,value=value))])
fig.update_layout(title_text="Energy Flow in Model City", font_size=12)
fig.show()

5.3 说明

  • 节点和边:通过sourcetarget定义节点,value表示流量大小。

  • 颜色映射:使用cmap设置颜色映射。

六、主题流图

6.1 什么是主题流图?

主题流图(Theme River)是一种用于展示时间序列数据的图表,通常用于展示多个主题随时间的变化趋势。

6.2 示例代码

import altair as alt
from vega_datasets import datasource = data.unemployment_across_industries.urlchart = alt.Chart(source).mark_area().encode(alt.X('yearmonth(date):T',axis=alt.Axis(format='%Y', domain=False, tickSize=0)),alt.Y('sum(count):Q', stack='center', axis=None),alt.Color('series:N',scale=alt.Scale(scheme='category20b'))
).interactive()# 保存为HTML文件
chart.save('unemployment_chart.html')

6.3 说明

  • 时间序列:通过stackplot函数创建主题流图。

  • 堆叠区域:每个主题的区域堆叠在一起,展示随时间的变化趋势。

七、总结

     本文介绍了五种扩展可视化图表:和弦图、旭日图、六边形箱图、桑基图和主题流图。这些图表在展示复杂数据关系、层次结构和流量分布方面具有独特的优势。希望这些示例能够激发您的灵感,帮助您在实际项目中选择合适的图表类型。资源绑定附上完整资料供读者参考学习!

如果您有任何问题或建议,请随时在评论区留言!

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

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

相关文章

大模型-爬虫prompt

爬虫怎么写prompt 以下基于deepseek r1 总结: 以下是为大模型设计的结构化Prompt模板,用于生成专业级网络爬虫Python脚本。此Prompt包含技术约束、反检测策略和数据处理要求,可根据具体需求调整参数: 爬虫脚本生成Prompt模板1 …

Vue中将pdf文件转为图片

平时开发中,我们经常遇到的场景应该是调用后端接口返回给前端pdf格式的文件流,然后我们可以通过URL.createObjectURL的方式转为object url临时路径然后可以通过window.open的方式来打开一个新的浏览器页签来进行预览,效果如下图: 但有时候这样满足不了的需求,它不想这样预…

物联网安全技术:守护智能世界的防线

最近研学过程中发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…

kubernetes安装部署k8s

kubernetes https://github.com/kubernetes/kubernetes.git go mod tidy go mod vendor go build -o .\bin -v ./… //手动创建bin文件夹 使用 minikube:https://gitee.com/mirrors/minikube.git 使用minikube启动本地化的集群服务 minikube start 启动集群&…

JT/T 1078 协议基本介绍与解析

文章目录 一、JT/T 1078 协议基本介绍二、JT/T 1078 与 JT808 的关系三、JT1078 协议核心功能四、JT1078 数据结构概览4.1、消息结构:4.2、消息类型(部分): 五、Java 中如何解析 JT1078 协议数据?5.1、JT1078 消息 ID …

手机为电脑提供移动互联网络的3种方式

写作目的 在当今数字化时代,电脑已成为人们日常工作和生活中不可或缺的工具,而网络连接更是其核心功能之一。无论是处理工作任务、进行在线学习、还是享受娱乐资源,稳定的网络环境都是保障这些活动顺利开展的关键。然而,在实际使用过程中,电脑网络驱动故障时有发生,这可…

Linux的 /etc/sysctl.conf 笔记250404

Linux的 /etc/sysctl.conf 笔记250404 /etc/sysctl.conf 是 Linux 系统中用于 永久修改内核运行时参数 的核心配置文件。它通过 sysctl 工具实现参数的持久化存储,确保系统重启后配置依然生效。以下是其详细说明: 📂 备份/etc/sysctl.conf t…

deepseek v3-0324 Markdown 编辑器 HTML

Markdown 编辑器 HTML 以下是一个美观的 Markdown 编辑器 HTML 页面&#xff0c;支持多种主题切换和实时预览功能&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&q…

Linux make 检查依赖文件更新的原理

1. 文件的时间戳 make 主要依靠文件的时间戳来判断依赖文件是否有更新。每个文件在文件系统中都有一个时间戳&#xff0c;记录了文件的三种重要时间&#xff1a; ​​访问时间&#xff08;Accesstime&#xff09;​​&#xff1a;文件最后一次被访问的时间。​​修改时间&…

HDEBits中组合逻辑类的部分题目练习

文章目录 1. More logic gates2. Truth tables3. 256-to-1 4-bit multiplexer4. 3-bit binary adder5. Signed addition overflow6. 4-digit BCD adder7. Minimum SOP and POS8. Karnaugh map9. K-map implemented with a multiplexer总结 1. More logic gates 题目&#xff1…

Apache httpclient okhttp(2)

学习链接 Apache httpclient & okhttp&#xff08;1&#xff09; Apache httpclient & okhttp&#xff08;2&#xff09; okhttp github okhttp官方使用文档 okhttp官方示例代码 OkHttp使用介绍 OkHttp使用进阶 译自OkHttp Github官方教程 SpringBoot 整合okHttp…

【git项目管理】长话短说

目录 主要分为三种使用情况 安装git后第一次使用创建新仓库并管理克隆仓库并管理 初次使用git 首先确定电脑的用户名是纯英文&#xff0c;没有中文和奇怪的符号&#xff0c;如果不满足这个条件&#xff0c;参考这个 链接 修改用户名 git config --global user.name "…

算法刷题记录——LeetCode篇(3.2) [第211~212题](持续更新)

更新时间&#xff1a;2025-04-04 算法题解目录汇总&#xff1a;算法刷题记录——题解目录汇总技术博客总目录&#xff1a;计算机技术系列博客——目录页 优先整理热门100及面试150&#xff0c;不定期持续更新&#xff0c;欢迎关注&#xff01; 215. 数组中的第K个最大元素 给…

【linux学习】linux系统调用编程

目录 一、任务、进程和线程 1.1任务 1.2进程 1.3线程 1.4线程和进程的关系 1.5 在linux系统下进程操作 二、Linux虚拟内存管理与stm32的真实物理内存区别 2.1 Linux虚拟内存管理 2.2 STM32的真实物理内存映射 2.3区别 三、 Linux系统调用函数 fork()、wait()、exec(…

react redux的学习,多个reducer

redux系列文章目录 第一章 简单学习redux,单个reducer 前言 前面我们学习到的是单reducer的使用&#xff1b;要知道redux是个很强大的状态存储库&#xff0c;可以支持多个reducer的使用。 combineReducers ‌combineReducers‌是Redux中的一个辅助函数&#xff0c;主要用于…

Oracle数据库数据编程SQL<3.5 PL/SQL 存储过程(Procedure)>

存储过程(Stored Procedure)是 Oracle 数据库中一组预编译的 PL/SQL 语句集合,存储在数据库中并可通过名称调用执行。它们是企业级数据库应用开发的核心组件。 目录 一、存储过程基础 1. 存储过程特点 2. 创建基本语法 3. 存储过程优点 4. 简单示例 二、没有参数的存储…

手撕AVL树

引入&#xff1a;为何要有AVL树&#xff0c;二次搜索树有什么不足&#xff1f; 二叉搜索树有其自身的缺陷&#xff0c;假如往树中插入的元素有序或者接近有序&#xff0c;二叉搜索树就会退化成单支树&#xff0c;时间复杂度会退化成O(N)&#xff0c;因此产生了AVL树&#xff0c…

《 C语言中的变长数组:灵活而强大的特性》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 一、变长数组的定义二、变长数组的优势三、变长数组的使用示例示例1&#xff1a;动态输入数组大小示例2&#xff1a;变长数组在函数中的应用 四、变长数组的…

【微服务】基础概念

1.什么是微服务 微服务其实就是一种架构风格&#xff0c;他提倡我们在开发的时候&#xff0c;一个应用应该是一组小型服务而组成的&#xff0c;每一个服务都运行在自己的进程中&#xff0c;每一个小服务都通过HTTP的方式进行互通。他更加强调服务的彻底拆分。他并不是仅局限于…

Linux make与makefile 项目自动化构建工具

本文章将对make与makefile进行一些基础的讲解。 假设我们要建造一座房子&#xff0c;建造过程涉及很多步骤&#xff0c;比如打地基、砌墙、安装门窗、粉刷墙壁等。每个步骤都有先后顺序&#xff0c;并且有些步骤可能依赖于其他步骤的完成。比如&#xff0c;你必须先打好地基才…