当前位置: 首页 > article >正文

WPF新手村教程(七)—— 终章(MVVM架构初见杀)疤

1. 哑铃图是什么哑铃图Dumbbell Plot有时也称为DNA图或杠铃图是一种用于比较两个相关数据点的可视化图表。它源于人们对更有效数据比较方式的持续探索。在传统的时间序列比较中我们通常使用两条折线但当需要比较的项目较多时折线图会变得混乱。哑铃图通过将比较焦点放在每个项目的两个状态上解决了多项目对比时的视觉混乱问题。它的基本结构很简单每个观察单位如产品、地区、时间段对应两个数据点这两个数据点由一条直线或线段连接整个图形看起来像一排排哑铃因而得名2. 实现原理哑铃图的核心设计理念是最小化认知负荷。当我们需要比较A和B时最直接的方式就是把它们放在一起用一条线连接然后观察这条线的长度差异大小和方向哪个更大。在matplotlib中创建哑铃图我们主要使用以下元素散点图表示两个数据点直线段连接两个相关点颜色编码通常用不同颜色区分前后状态或不同组别标签系统清晰标识每个观察单位3. 实战示例接下来我们看看哑铃图在实际场景中的显示效果。假设我们是一家电商公司的数据分析师需要比较8个主要产品类别在2022年和2023年的销售额变化。完整的代码在文章末尾提供下载地址文中只截取部分代码先创建一些测试数据# 示例数据8个产品类别在2022年和2023年的销售额单位万元categories [电子产品,服装鞋帽,家居用品,美妆护肤,图书音像,运动户外,食品饮料,母婴用品,]sales_2022 [85, 92, 78, 65, 45, 60, 88, 72]sales_2023 [95, 87, 85, 78, 52, 73, 95, 80]然后我们绘制传统的簇状条形图和哑铃图来对比一下效果# 创建子图对比两种可视化方法fig, (ax1, ax2) plt.subplots(1, 2, figsize(14, 8))# 簇状条形图x np.arange(len(categories))bars1 ax1.bar(x - width/2, sales_2022, width, label2022年, color#4C72B0, alpha0.8)bars2 ax1.bar(x width/2, sales_2023, width, label2023年, color#DD8452, alpha0.8)# 在每个条形上添加数值标签# 省略 ...# 哑铃图# 设置y轴位置每个类别的垂直位置y_pos np.arange(len(categories))# 绘制连接线for i, (y2022, y2023) in enumerate(zip(sales_2022, sales_2023)):# 确定线颜色增长为绿色下降为红色line_color #55A868 if y2023 y2022 else #C44E52ax2.plot([y2022, y2023], [i, i], colorline_color, linewidth2.5, alpha0.7, zorder1)# 绘制数据点ax2.scatter(sales_2022, y_pos, s120, color#4C72B0, alpha0.9, label2022年, zorder2, edgecolorswhite, linewidth2)ax2.scatter(sales_2023, y_pos, s120, color#DD8452, alpha0.9, label2023年, zorder2, edgecolorswhite, linewidth2)# 省略 ...plt.tight_layout()plt.show()通过上面的对比我们可以清晰地看到哑铃图的优势变化一目了然连接线的长度直观表示变化幅度方向表示增长或下降减少视觉跳跃眼睛不需要在条形间来回移动而是沿着水平线自然追踪突出比较重点专注于每个项目的两个状态对比而非绝对数值进一步我们还可以给哑铃图排序按照增长由快到慢给各个品类排序这样自然形成从下降最显著到增长最显著的连续谱模式自动显现无需刻意寻找。比如上面的哑铃图中【服装鞋帽】这个品类其实销售额是下降的混在一堆哑铃中不容易看出来吧# 创建排序后的哑铃图fig, ax plt.subplots(figsize(10, 8))# 按变化幅度排序sorted_indices np.argsort([sales_2023[i] - sales_2022[i] for i in range(len(categories))])sorted_categories [categories[i] for i in sorted_indices]sorted_2022 [sales_2022[i] for i in sorted_indices]sorted_2023 [sales_2023[i] for i in sorted_indices]# 绘制连接线# 省略 ...# 绘制数据点# 省略 ...# 添加变化箭头标注# 省略 ...plt.tight_layout()plt.show()这样改造后由上到下的哑铃越来越短也就是增长越来越慢最底部的那个是负增长用了红色来标注。4. 总结数据可视化的核心目标是有效传达信息。当我们需要强调变化、比较两个相关状态时哑铃图提供了一种简洁而强大的解决方案。就像选择合适的工具完成工作一样在面对数据比较任务时我们应该根据具体需求选择最合适的可视化形式当需要比较多个项目的两个状态时选择哑铃图当需要展示单个项目的多个组成部分时选择堆积条形图当需要比较多个项目的多个类别时选择簇状条形图最好的可视化不是最复杂的而是能让观众在最短时间内理解最多信息的那个。哑铃图正是这样一种高效的工具它用最简单的线条连接讲述了数据世界中最动人的变化故事。毒罕酱缕

相关文章:

WPF新手村教程(七)—— 终章(MVVM架构初见杀)疤

1. 哑铃图是什么? 哑铃图(Dumbbell Plot),有时也称为DNA图或杠铃图,是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中,我们通常使用两条折…...

打破B站字幕提取壁垒:BiliBiliCCSubtitle如何重构视频文字信息获取范式

打破B站字幕提取壁垒:BiliBiliCCSubtitle如何重构视频文字信息获取范式 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 在信息爆炸的视频时代&#xf…...

避坑指南:解决Gazebo模型贴图不显示的5个常见问题(以aruco.png为例)

Gazebo模型贴图实战:从ArUco标记到高级材质应用的深度解析 第一次在Gazebo中看到ArUco标记完美呈现在机器人末端时,那种成就感至今难忘——但在此之前,我经历了整整两天的路径错误、材质丢失和纹理错乱。本文将分享那些官方文档没告诉你的实战…...

Adobe-GenP 3.0逆向工程工具深度解析:技术架构与二进制修补实现方案

Adobe-GenP 3.0逆向工程工具深度解析:技术架构与二进制修补实现方案 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0是一款基于AutoIt脚本…...

从办公室到车间:给IT网管的Profinet入门避坑指南(含VLAN与安全配置)

从办公室到车间:IT工程师的Profinet工业网络融合实战手册 当IT工程师第一次踏入嘈杂的工厂车间,面对那些闪烁着信号灯的PLC和伺服驱动器时,往往会感到一丝无所适从。这就像一位习惯在城市道路驾驶的司机,突然被要求操作一架喷气式…...

2026年重庆豆包排名GEO优化公司推荐与选型避坑指南(附5大服务商真实测评)

第一部分:引言与需求明确作为西部制造业核心、国际消费中心城市,重庆目前已形成汽车、电子信息、装备制造、先进材料、食品加工五大千亿级支柱产业,同时家装、文旅、大宗消费等赛道市场竞争逐年白热化。据2026年重庆本地数字营销行业调研数据…...

为什么92%的团队在2026 Q1前必须升级AOT?:Python原生编译配置失败率下降83%的7个关键参数调优

第一章:Python 原生 AOT 编译方案 2026 配置步骤详解Python 原生 AOT(Ahead-of-Time)编译方案 2026 是 CPython 官方实验性分支,旨在为标准 Python 代码生成独立、免解释器的原生可执行文件,无需运行时依赖 libpython.…...

【FastAPI 2.0流式AI生产部署终极指南】:5大避坑清单+3倍吞吐压测实录,92%团队忽略的异步上下文泄漏隐患

第一章:FastAPI 2.0流式AI生产部署全景认知FastAPI 2.0标志着异步AI服务部署范式的重大演进,其原生增强的流式响应能力(StreamingResponse)、零成本中间件生命周期管理、以及与 ASGI 3.0 深度对齐的事件驱动模型,为大语…...

[具身智能-283]:从某种意义上看,卷积核也是一种平面空间注意力机制,有两层含义:一个卷积核只关注某一特征,一次移动关注卷积核对应的局部区域。

这个观点实际上是从信息筛选和资源分配的角度,重新解构了卷积操作的物理意义。将卷积核视为一种“平面空间注意力机制”,不仅逻辑自洽,而且精准地揭示了CNN处理信息的两个核心维度:特征维度的专一性和空间维度的局部性。我们可以顺…...

自动化测试面试中常见的问题

一、测试用例再执行点击元素时失败,导致整个测试用例失败。如何提高点击元素的成功率?解决办法:selenium是在点击元素时是通过元素定位的方式找到元素的,要提高点击的成功率,必须保证找到元素的定位方式准确。但是在自动化工程的…...

ArcGIS Pro实战:5分钟搞定气象站点TXT坐标转面状Shapefile(附Python脚本)

ArcGIS Pro气象数据处理实战:从TXT坐标到面状Shapefile的高效转换 在地理信息系统(GIS)工作中,气象站点数据的处理是常见但容易出错的环节。许多气象数据以TXT格式存储,包含站点坐标和边界信息,而将这些数据转换为GIS可用的面状Sh…...

别再从头训练模型了!用PyTorch微调ResNet-50,10分钟搞定CIFAR-10分类

10分钟极速实战:用PyTorch微调ResNet-50征服CIFAR-10分类 当你在深夜赶课程作业,或是参加黑客马拉松时,突然需要构建一个图像分类器——别急着打开Colab从头训练模型。我曾在48小时编程竞赛中,用预训练模型微调的方法,…...

UWB定位算法实战指南:从原理到工业应用(2025年最新解析)

1. UWB定位技术:工业场景的厘米级解决方案 想象一下在一个大型汽车制造车间里,数百台自动导引车(AGV)需要以厘米级精度穿梭于生产线之间。这正是UWB(超宽带)技术大显身手的场景——它就像给每台设备装上了&…...

itch性能优化完全手册:10个技巧让你的游戏运行更流畅

itch性能优化完全手册:10个技巧让你的游戏运行更流畅 【免费下载链接】itch 🎮 The best way to play your itch.io games 项目地址: https://gitcode.com/gh_mirrors/it/itch itch是一款优秀的游戏分发平台客户端,专为itch.io游戏爱好…...

适配内网需求的视频会议新选择:云屋快速部署赋能企业安全高效沟通

在现代企业日常运营中,高效顺畅的沟通协作是推动业务稳步增长的核心动力,而视频会议作为当下远程协作、内部沟通的核心工具,已经在各个行业得到了普及应用。目前市场上诞生了不少知名度较高的视频会议产品,腾讯会议就是其中受众最…...

PINCE实战案例:分析热门Linux游戏的逆向工程过程

PINCE实战案例:分析热门Linux游戏的逆向工程过程 【免费下载链接】PINCE Reverse engineering tool for linux games 项目地址: https://gitcode.com/gh_mirrors/pi/PINCE PINCE(PINCE is not Cheat Engine)是一款专为Linux游戏设计的…...

driftctl部署与配置完全手册:基础设施漂移检测终极指南

driftctl部署与配置完全手册:基础设施漂移检测终极指南 【免费下载链接】driftctl Detect, track and alert on infrastructure drift 项目地址: https://gitcode.com/gh_mirrors/dr/driftctl driftctl是一款强大的基础设施即代码(IaC&#xff09…...

10.3处理流程设计-系统设计-人机界面设计

一、流程设计 00:00 1. 流程设计工具 00:25 1)程序流程图 00:32 基本概念: 用图框表示各种操作,独立于程序设计语言,直观清晰结构组成: 仅由顺序、选择和循环三种基本结构组合或嵌套而成应用场景: 可描述…...

如何快速安装和配置 open-vm-tools:VMware 虚拟机优化的终极教程

如何快速安装和配置 open-vm-tools:VMware 虚拟机优化的终极教程 【免费下载链接】open-vm-tools Official repository of VMware open-vm-tools project 项目地址: https://gitcode.com/gh_mirrors/op/open-vm-tools open-vm-tools 是 VMware 官方推出的开源…...

10个提升性能的技巧:msgpack Golang最佳实践

10个提升性能的技巧:msgpack Golang最佳实践 【免费下载链接】msgpack msgpack.org[Go] MessagePack encoding for Golang 项目地址: https://gitcode.com/gh_mirrors/msg/msgpack msgpack Golang是一款高效的MessagePack编码库,为Go语言开发者提…...

【2024最严生产红线】:FastAPI AI服务必须通过的4项流式SLA认证——延迟P99<320ms、首字节TTFB<85ms、断连重续成功率≥99.997%

第一章:FastAPI 2.0异步AI流式响应生产部署全景图FastAPI 2.0 引入了原生增强的异步流式响应支持,结合 ASGI 服务器(如 Uvicorn 0.29)与现代 LLM 推理框架(如 vLLM、Text Generation Inference)&#xff0c…...

别再凭感觉选电容了!手把手教你搞定BUCK/BOOST电源的MLCC和电解电容搭配

从纹波抑制到PCB布局:BUCK/BOOST电路电容组合设计的黄金法则 当你在调试一块新设计的电源板时,突然发现输出电压纹波异常增大,示波器上那些不规则的毛刺是否曾让你彻夜难眠?这往往是电容选配不当的典型症状。在BUCK/BOOST电源设计…...

WarcraftHelper终极指南:魔兽争霸3现代电脑完整兼容性修复方案

WarcraftHelper终极指南:魔兽争霸3现代电脑完整兼容性修复方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代电脑…...

5个高效技巧:downkyi批量下载完全指南

5个高效技巧:downkyi批量下载完全指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)。 项目…...

【数据结构与算法】堆(大顶堆小顶堆堆排序)

👨‍💻 关于作者:会编程的土豆 “不是因为看见希望才坚持,而是坚持了才看见希望。” 你好,我是会编程的土豆,一名热爱后端技术的Java学习者。 📚 正在更新中的专栏: 《数据结构与算…...

Mem Reduct内存管理功能完全指南:从基础设置到高级优化

Mem Reduct内存管理功能完全指南:从基础设置到高级优化 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct M…...

别再对着黑乎乎的标签图发愁了!手把手教你给农业大棚遥感数据集上色(附Python代码)

农业大棚遥感数据可视化:用Python给黑白标签注入色彩生命 当你第一次打开农业大棚遥感数据集的标签文件时,那片漆黑是否让你感到困惑?作为一名刚接触遥感图像分割的开发者,我完全理解这种挫败感——你明明知道这些像素值代表着不同…...

一文搞懂 Spring Cloud:从入门到实战的微服务全景指南(建议收藏)盼

一、中间件是啥?咱用“餐厅”打个比方 想象一下,你的FastAPI应用是个高级餐厅。 ?? 顾客(客户端请求)来到门口。- 迎宾(CORS中间件):先看你是不是从允许的街区(域名)来…...

PD 2.0 与 PD 3.0 深度解析:从固定档位到 PPS 精细化供电的技术演进

USB Power Delivery(USB PD)是USB-IF制定的通用快充与供电协议,依托Type-C接口实现高功率、多功能电力传输,已成为手机、笔记本、平板、外设等设备的主流供电标准。PD 2.0奠定高功率快充基础,PD 3.0则以PPS可编程电源为…...

PyCharm虚拟环境配置避坑指南:为什么你的模块导入有提示但运行报错?

PyCharm虚拟环境配置避坑指南:为什么你的模块导入有提示但运行报错? 作为Python开发者,PyCharm的智能提示功能是我们日常开发的重要助力。但你是否遇到过这样的情况:明明在虚拟环境中安装了模块,代码运行时一切正常&am…...