可视化图表走起来(1):桑基图,一目了然数据流向。

news2025/4/11 23:59:58

从事可视化设计,什么时候选用什么样的图表非常重要,今天来介绍一下桑基图的定义、场景、数据项等等,贝格前端工场愿意与各位老铁一道成长。

一、桑基图的定义

桑基图(Sankey diagram)是一种特殊类型的可视化图表,用于显示流量、能量、资源等在不同阶段或组件之间的流动和转移关系。

图表由一系列连续的箭头线段组成,箭头的宽度表示流量的大小或比例。桑基图通常用于展示复杂的流程、路径或网络,以便观察和分析各个组件之间的关联和贡献。该图表可以帮助用户快速理解和识别主要的流动路径,发现潜在的瓶颈或优化机会。


二、桑基图的作用和应用场景

桑基图有以下几个主要的作用和应用场景:

展示流程和路径:

桑基图可以清晰地展示复杂的流程、路径或网络,帮助用户理解和分析各个组件之间的关联和贡献。它可以显示不同阶段或组件之间的流量转移和流向,帮助用户追踪和理解数据、资源或能量的流动情况。

发现瓶颈和优化机会:

通过观察桑基图中的流量大小或比例,用户可以快速识别主要的流动路径和潜在的瓶颈。这有助于发现系统中的瓶颈点,并提供改进和优化的机会。

比较和对比:

桑基图可以用于比较不同组件之间的流量差异和变化。用户可以通过比较箭头的宽度、长度或颜色来观察不同组件之间流量的变化趋势,从而得到有关变化的洞察。

故事叙述和演示:

桑基图可以用于以图表形式叙述一个故事或展示一个过程。它可以帮助用户将复杂的信息和数据可视化,以更直观和易于理解的方式进行演示和传达。

决策支持:

桑基图可以提供有关流量、资源或能量转移的详细信息,帮助用户做出决策。用户可以根据桑基图中展示的流量和关联关系,进行分析和推断,并基于这些信息制定战略或采取行动。

桑基图在许多领域和场景中都有广泛的应用,包括物流、能源管理、市场分析、数据科学等。


三、桑基图构成要素

桑基图通常由以下几个要素构成:

节点(Node):

节点表示系统或组件,通常以矩形或圆形的形式呈现。每个节点代表一个阶段、状态或组件,并且在桑基图中有唯一的标识符。


 


 

箭头(Arrow):

箭头表示流量的流向,用于连接不同的节点。箭头的宽度可以表示流量的大小或比例,即流量越大,箭头越宽。

流量(Flow):

流量表示在不同节点之间的转移或流动。它可以通过箭头的宽度、长度或颜色来表示。流量的大小或比例通常关联着数据的量级或比例关系。

标签(Label):

标签用于标识节点或箭头的名称、数值或其他相关信息。它可以帮助用户更好地理解和解释图表中的节点和流量。

颜色(Color):

颜色在桑基图中常用于区分不同的节点、流量或类别。通过使用不同的颜色,可以将图表中的元素进行分类、分组或区分。

这些要素的组合和排列方式可以根据具体的需求和设计来进行调整和定制,以满足用户对桑基图的可视化需求。


四、桑基图的配置项

在 Echarts 中,桑基图(Sankey diagram)的配置项包括:

series.type:设置为 ‘sankey’ 表示使用桑基图。
series.data:桑基图的节点和流量数据。数据格式为一个包含 nodes 和 links 两个数组的对象。nodes 数组包含所有的节点信息,每个节点都包括 name 属性来表示节点的名称。links 数组包含所有的流量信息,每个流量都包括 source、target 和 value 属性,分别表示源节点、目标节点和流量的大小。
series.layout:设置桑基图的布局方式。可以选择 ‘none’(表示节点按照数据顺序排列)、‘none’(表示节点按照拓扑排序排列)或 ‘none’(表示节点按照层级排列)。
series.nodeWidth:设置节点的宽度。
series.nodeGap:设置节点之间的间距。

series.label:设置节点和流量的标签显示。可以配置标签的位置、字体样式、颜色等。
series.itemStyle:设置节点和流量的样式,包括颜色、边框样式等。
series.lineStyle:设置流量的线条样式,包括颜色、弯曲程度等。
series.emphasis:设置节点和流量的高亮样式,当鼠标悬停或选中时生效。
series.links:设置桑基图的流量线条的样式,可以配置线条的颜色、宽度等。
series.autoCurveness:设置流量线条的弯曲程度,可以通过调整数值来改变线条的曲率。

series.focusNodeAdjacency:设置是否启用节点间的高亮交互效果,当鼠标悬停在一个节点上时,与该节点相关的节点和流量都会高亮显示。
series.draggable:设置节点是否可拖拽,可以通过拖拽节点来改变节点之间的连接关系。
series.highlightPolicy:设置节点和流量的高亮策略,可以选择 ‘ancestor’(高亮所有的祖先节点和后代节点)、‘descendant’(高亮所有的后代节点)或 ‘self’(只高亮当前节点)。
series.animation:设置桑基图的动画效果,包括动画的持续时间、缓动效果等。
series.tooltip:设置节点和流量的提示框,可以配置提示框的内容、样式等。
toolbox.feature.saveAsImage:设置是否显示保存为图片的功能按钮,可以将桑基图保存为图片文件。

这些配置项可以根据具体的需求进行调整和定制,以满足用户对桑基图的展示和交互需求。需要注意的是,不同版本的 Echarts 可能会有略微的差异,建议参考官方文档和示例进行具体的配置。

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

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

相关文章

数据结构-3、栈、队列和数组

3.1、栈 3.1.1、栈的基本概念: 1、栈的定义: ​ 栈是只允许在一端进行插入或删除操作的线性表。首先,栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作,如下图: ​ 栈顶(Top&…

Zombie Animations Set

僵尸动画合集,包括成对攻击/抓取、各种移动方式、爬行、击中反应、死亡动画等。 生产说明 动画总数:99(包括22个位置变化) 配对动画:36 攻击次数:6次 爬网:9 命中反应:6 空转:14 行程2 跑步次数:9次 短跑:2 匝数:3 步行次数:12次 免责声明 任何游戏玩法蓝图都不包…

【电路笔记】-共集极放大器

共集极放大器 文章目录 共集极放大器1、概述2、等效电路3、电压增益4、偏置方法5、输入阻抗6、输出阻抗7、电流增益8、示例:共集电极放大器的电压、电流和功率增益9、达林顿对10、总结1、概述 本文介绍另一种用于放大信号的双极晶体管架构,通常称为共集电极放大器 (CCA)。 C…

深入解析Prometheus架构:打造高效监控系统的终极指南

1. Prometheus Server(Prometheus服务器) 技术原理: Retrieval(检索模块):定期从配置的Targets(目标)拉取监控数据。使用HTTP协议,通过拉取的方式收集数据。TSDB&#…

如何通过抖音自动评论精准获客实现业务增长?这些方法值得一试!

在当今竞争激烈的商业环境中,企业若想脱颖而出,就必须掌握精准获客的艺术。精准获客,即通过精确的市场定位和营销策略,吸引并保留最有可能成为客户的目标群体。它不仅能提高转化率,还能有效降低营销成本,是…

【人工智能】开发AI可能获刑?加州1047草案详解

引言 随着人工智能(AI)技术的飞速发展,其应用领域不断扩展,但同时也引发了诸多争议和监管问题。近期,加州参议院以32比1的压倒性投票通过了1047号草案,又称《前沿人工智能模型安全可靠创新法案》。这一草案…

Java---认识异常

欢迎大家来观看本博课------Java------认识异常。1.异常的概念和体系结构 1.异常的概念和体系结构 1.1 异常的概念 在Java中,在程序执行过程中发生的不正常行为称为异常。如在之前我们经常遇到的算数异常(ArithmeticException)、数组越界…

金融行业的等保测评要求

在金融行业中,网络安全问题非常普遍,如恶意攻击、病毒感染、数据泄露等。这些问题可能会导致金融机构的信息系统瘫痪,造成巨大的经济损失,甚至影响国家金融稳定。因此,金融机构应该高度重视网络安全问题,采…

使用libpurple函数库接入服务器

代码; #define CUSTOM_USER_DIRECTORY "/dev/null" // 定义用户目录 #define CUSTOM_PLUGIN_PATH "" // 定义插件目录 #define PLUGIN_SAVE_PREF "/purple/nullclient/plugins/saved" // 定义插件头目录 #define UI_ID "nullc…

DELL服务器插入新磁盘、创建虚拟磁盘、挂载磁盘步骤

文章目录 一、磁盘清理(可选,针对新硬盘是Foreign状态)1、进入VD Mgmt2、清理新硬盘配置 二、创建虚拟磁盘1、进入Device Settings2、创建虚拟磁盘 三、挂载磁盘到系统1、分区磁盘(注意实际磁盘的名称)2、格式化分区3、…

跨境电商中的IP隔离是什么?怎么做?

一、IP地址隔离的概念和原理 当我们谈论 IP 地址隔离时,我们实际上是在讨论一种网络安全策略,旨在通过技术手段将网络划分为不同的区域或子网,每个区域或子网都有自己独特的 IP 地址范围。这种划分使网络管理员可以更精细地控制哪些设备或用…

微服务feign组件学习

手写不易,对您有帮助。麻烦一键三连。也欢饮各位大料指正,交流。 微服务feign组件学习 1.概念1.1 feign 概念1.2 Ribbon概念 2.使用2.1 集成feign2.1.1 maven依赖2.1.2 项目结构 2.2 使用2.2.1 定义feign接口2.2.2 消费端服务调用2.2.3 消费端扫描feig…

Java面试题汇总(持续更新.....)

Java面试题 1. JVM & JDK & JRE Java虚拟机(JVM)是运行Java字节码的虚拟机,JVM有针对不同系统的特定实现,目的是使用相同的字节码,他们都会给出相同的结果。字节码和不同系统的JVM实现是Java语言“一次编译、…

个人网站制作 Part 25 添加实时聊天功能 | Web开发项目添加页面缓存

文章目录 👩‍💻 基础Web开发练手项目系列:个人网站制作🚀 添加实时聊天功能🔨使用聊天服务🔧步骤 1: 选择聊天服务🔧步骤 2: 安装Socket.io🔧步骤 3: 创建Socket.io服务器 &#x1…

抽奖系统源码_微信抽奖系统PHP源码开源

介绍: 微信抽奖系统源码是一个以php MySQL进行开发的手机抽奖系统源码。用途:适合做推广营销、直播、粉丝抽奖。 功能介绍: 1、后台可以设置每个抽奖用户的抽奖次数,后台添加设置奖品,适和企业和商场搞活动,后台添加用户,才能抽…

如何应对缺失值带来的分布变化?探索填充缺失值的最佳插补算法

本文将探讨了缺失值插补的不同方法,并比较了它们在复原数据真实分布方面的效果,处理插补是一个不确定性的问题,尤其是在样本量较小或数据复杂性高时的挑战,应选择能够适应数据分布变化并准确插补缺失值的方法。 我们假设存在一个…

【多线程】Thread类及其基本用法

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. Java中多线程编程1.1 操作系统线程与Java线程1.2 简单使用多线程1.2.1 初步创建新线程代码1.2.2 理解每个…

小功率无变压器电源设计

采用无变压器电源解决方案为低功率电路提供所需电源通常是有利的。 事实上,如果负载电流只有几十毫安,则可以将输入交流电压转换为直流电压,而无需使用大型、昂贵且笨重的变压器。不带变压器的替代方案也更便宜、更轻并且占地面积更小。无变…

深入剖析人才管理的关键要素:“选、用、育、留”四大核心要素

在当今这个日新月异的商业时代,企业的成功不再仅仅取决于资金、技术或市场策略,而更多地依赖于企业所拥有的人才资源。有效的人才管理策略,尤其是“选、用、育、留”四大核心要素,已成为推动企业持续发展的关键。 一、选&#xff…

28.启动与暂停程序

上一个内容:27.设计注入功能界面 以它 27.设计注入功能界面 的代码为基础进行修改 点击添加游戏按钮之后就把游戏启动了 CWndINJ.cpp文件中修改: void CWndINJ::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码/*ExeLst.InsertItem(0, L…