Python数据可视化实战:从基础图表到高级分析
Python数据可视化实战:从基础图表到高级分析
数据可视化是数据分析的重要环节,通过直观的图表可以快速洞察数据规律。本文将通过5个实际案例,手把手教你使用Python的Matplotlib库完成各类数据可视化任务,涵盖条形图、堆积面积图、饼图、直方图等常见图表类型,并包含误差分析、颜色映射等高级技巧。
案例1:商品网购替代率分析
数据背景
分析不同商品种类的网购替代率(线上消费对线下的替代比例),数据来源:国家统计局北京调查总队抽样调查。
实现代码
# 01_online_substitution_rate.py
import matplotlib.pyplot as plt
import numpy as np# 中文显示设置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# 数据准备
categories = ["家政服务", "交通票务", "家具", "手机配件", "计算机产品", "汽车用品", "充值服务", "个护用品","书报音像", "餐饮旅游", "家用电器", "食品饮料","日用品", "保险票务", "服装家纺", "数码产品","其他商品", "工艺品"]
substitution_rates = [0.959, 0.951, 0.935, 0.924, 0.893,0.892, 0.865, 0.863, 0.860, 0.856,0.854, 0.835, 0.826, 0.816, 0.798,0.765, 0.763, 0.671]# 可视化
plt.figure(figsize=(10, 8))
bars = plt.barh(categories, substitution_rates, color=plt.cm.viridis(np.linspace(0,1,len(categories))),height=0.7)# 添加数据标签
for bar in bars:width = bar.get_width()plt.text(width+0.01, bar.get_y()+0.3,f'{width*100:.1f}%',va='center')plt.title("各商品品类网购替代率分析", pad=20)
plt.xlabel("替代率")
plt.xlim(0.6, 1.0)
plt.grid(axis='x', alpha=0.3)
plt.tight_layout()plt.show()
可视化解读

- 使用水平条形图清晰展示长文本标签
- 渐变色映射替代率高低(深色表示高替代率)
- 右侧数据标签辅助精确读数
案例2:物流公司费用对比
数据背景
比较A/B/C三家物流公司全年费用分布,数据来源:企业年度财报。
实现代码
# 02_logistics_cost.py
months = np.arange(1,13)
cost_a = [198,215,245,222,200,236,201,253,236,200,266,290]
cost_b = [203,236,200,236,269,216,298,333,301,349,360,368]
cost_c = [185,205,226,199,238,200,250,209,246,219,253,288]plt.figure(figsize=(12,6))
plt.stackplot(months, cost_a, cost_b, cost_c,colors=['#1f77b4','#ff7f0e','#2ca02c'],alpha=0.8,labels=['A公司','B公司','C公司'])# 添加趋势线
total = np.array(cost_a) + np.array(cost_b) + np.array(cost_c)
plt.plot(months, total, color='#d62728', marker='o', linestyle=':', label='总费用')plt.title("物流公司月度费用对比", pad=20)
plt.xlabel("月份")
plt.ylabel("费用(万元)")
plt.xticks(months)
plt.legend(loc='upper left')
plt.grid(axis='y', linestyle='--')
plt.show()
可视化解读

- 堆积面积图展示费用构成
- 红色趋势线反映总费用变化
- 半透明效果增强层次感
案例3:支付宝消费分析
数据背景
解析用户月度消费结构,数据来源:支付宝账单导出。
实现代码
# 03_alipay_bills.py
labels = ['购物','人情','餐饮','通信','日用','交通','娱乐','其他']
sizes = [800,100,1000,200,300,200,200,200]
colors = ['#4B9CD3','#FF6F61','#2E5339','#9467bd','#8c564b','#e377c2','#7f7f7f','#bcbd22']plt.figure(figsize=(10,8))
wedges, texts, autotexts = plt.pie(sizes, labels=labels,colors=colors,autopct='%1.1f%%',startangle=90,wedgeprops={'width':0.4}) # 环形图# 添加中心注释
plt.text(0, 0, "总支出\n3000元", ha='center', va='center',fontsize=14)plt.title("支付宝月度消费结构", pad=20)
plt.axis('equal') # 正圆形
plt.show()
可视化解读

- 环形饼图增强现代感
- 中心区域突出总金额
- 协调配色提升可读性
案例4:正态分布可视化
数据背景
展示随机数的分布规律,验证中心极限定理。
实现代码
# 04_normal_distribution.py
data = np.random.normal(loc=0, scale=1, size=1000)plt.figure(figsize=(10,6))
plt.hist(data, bins=20, density=True, alpha=0.6, color='#1f77b4')# 添加理论曲线
x = np.linspace(-4,4,100)
plt.plot(x, 1/(1*np.sqrt(2*np.pi)) * np.exp(-0.5*(x/1)**2),linewidth=2, color='#d62728')plt.title("正态分布验证", pad=20)
plt.xlabel("数值")
plt.ylabel("概率密度")
plt.grid(alpha=0.3)
plt.show()
可视化解读

- 直方图展示实际分布
- 红色曲线表示理论分布
- 半透明处理避免视觉压迫
案例5:班级身高分析
数据背景
模拟生成班级身高数据,分析分布特征。
实现代码
# 05_class_height.py
heights = np.random.normal(loc=170, scale=5, size=40)plt.figure(figsize=(10,6))
n, bins, patches = plt.hist(heights, bins=6, color='#4B9CD3',edgecolor='white')# 添加统计信息
plt.axvline(heights.mean(), color='red', linestyle='--')
plt.text(0.7, 0.8, f'μ={heights.mean():.1f}cm\nσ={heights.std():.1f}cm',transform=plt.gca().transAxes)plt.title("班级身高分布", pad=20)
plt.xlabel("身高(cm)")
plt.ylabel("人数")
plt.show()
可视化解读

- 蓝色柱形展示各区间人数
- 红色虚线标注平均身高
- 右上角显示统计参数
总结
本文通过5个典型案例演示了:
- 条形图:对比类数据展示
- 堆积图:构成分析
- 饼图:比例呈现
- 直方图:分布规律
- 综合应用:数据模拟+统计分析
完整代码已托管至GitHub仓库,建议读者克隆代码库后结合实际数据修改参数练习。掌握这些可视化方法后,你可以:
- 制作专业的分析报告
- 优化数据呈现方式
- 快速发现数据异常
- 提升数据分析效率
扩展建议:
- 尝试使用Seaborn库简化复杂图表
- 学习Plotly制作交互式可视化
- 探索D3.js实现高级动态效果
相关文章:
Python数据可视化实战:从基础图表到高级分析
Python数据可视化实战:从基础图表到高级分析 数据可视化是数据分析的重要环节,通过直观的图表可以快速洞察数据规律。本文将通过5个实际案例,手把手教你使用Python的Matplotlib库完成各类数据可视化任务,涵盖条形图、堆积面积图、…...
在 Elasticsearch 中扩展后期交互模型 - 第 2 部分 - 8.18
作者:来自 Elastic Peter Straer 及 Benjamin Trent 本文探讨了如何优化后期交互向量,以适应大规模生产工作负载,例如减少磁盘空间占用和提高计算效率。 在之前关于 ColPali 的博客中,我们探讨了如何使用 Elasticsearch 创建视觉搜…...
蓝桥每日打卡--区间移位
#蓝桥#JAVA#区间移位 题目描述 数轴上有n个闭区间:D1,⋯Dn。 其中区间Di用一对整数[ai,bi]来描述,满足 ai≤bi。 已知这些区间的长度之和至少有。 所以,通过适当的移动这些区间,你总可以使得他们的"并"覆盖 [0,],也…...
CUDAOpenCV 基于Hessian矩阵计算特征值
文章目录 一、简介二、实现代码三、实现效果一、简介 基于之前的博客:CUDA&OpenCV Hessain矩阵计算,我们可以计算出每个像素的特征值: 二、实现代码 ComputeHessainMatrix.cuh #ifndef HESSAIN_GPU_CUH #...
基于CAMEL 的Workforce 实现多智能体协同工作系统
文章目录 一、workforce 简介1.架构设计2.通信机制 二、workforce 工作流程图示例1.用户角色2.工作流程 三、workforce 中重要函数说明1.__init__函数2.add_single_agent_worker 函数3.add_role_playing_worker 函数4.add_workforce 函数 四、基于workforce实现多智能体协调&am…...
深入探讨 `ip2region` 中三种初始化方法:newWithBuffer、newWithVectorIndex 和 newWithFileOnly
在处理IP地址地理位置定位时,ip2region 提供了多种方式来初始化 Searcher 实例,以适应不同的应用场景和资源限制。本文将详细介绍并对比 newWithBuffer、newWithVectorIndex 和 newWithFileOnly 这三种初始化方法,帮助开发者根据自己的需求选…...
PostgreSQL_数据表结构设计并创建
目录 前置: 1 数据表设计思路 2 数据表格SQL 3 创建 3.1 创建数据库 db_stock 3.2 在 pgAdmin4 中创建表 前置: 本博文是一个系列。在本人“数据库专栏”-》“PostgreSQL_”开头的博文 1 数据表设计思路 1 日数据来自优矿,优矿的数据…...
如何在MCU工程中启用HardFault硬错误中断
文章目录 一、HardFault出现场景二、启动HardFault三、C代码示例 一、HardFault出现场景 HardFault(硬故障) 错误中断是 ARM Cortex-M 系列微控制器中一个较为严重的错误中断,一旦触发,表明系统遇到了无法由其他异常处理机制解决…...
MySQL -- 复合查询
数据库的查询是数据库使用中比较重要的环节,前面的基础查询比较简单,不做介绍,可自行查阅。本文主要介绍复合查询,并结合用例进行讲解。 本文的用例依据Soctt模式的经典测试表,可以自行下载,也可以自己创建…...
@EnableWebMvc注解导致的坑-记录
1.添加了EnableWebMvc,需要手动添加相关配置,swagger页面问题,出现Unable to render this definition The provided definition does not specify a valid version field. Please indicate a valid Swagger or OpenAPI version field. Suppor…...
卷积神经网络 - 卷积层(具体例子)
为了更一步学习卷积神经网络之卷积层,本文我们来通过几个个例子来加深理解。 一、灰度图像和彩色图像的关于特征映射的例子 下面我们通过2个例子来形象说明卷积层中“特征映射”的概念,一个针对灰度图像,一个针对彩色图像。 例子 1&#x…...
测试Claude3.7 sonnet画蛋白质
测试Claude3.7 sonnet画蛋白虽然画的很粗糙,但是大致画了出来...
java项目之基于ssm的游戏攻略网站(源码+文档)
项目简介 游戏攻略网站实现了以下功能: 管理员主要负责填充图书和其类别信息,并对已填充的数据进行维护,包括修改与删除,管理员也需要审核老师注册信息,发布公告信息,管理自助租房信息等。 💕…...
本地基于Ollama部署的DeepSeek详细接口文档说明
前文,我们已经在本地基于Ollama部署好了DeepSeek大模型,并且已经告知过如何查看本地的API。为了避免网络安全问题,我们希望已经在本地调优的模型,能够嵌入到在本地的其他应用程序中,发挥本地DeepSeek的作用。因此需要知…...
python NameError报错之导库报错
在日常代码编写中,经常出现如 图1 一样的报错,在代码多时很难找到问题,但翻看代码后就会发现是因为未导库, 图1 报错 代码: time.sleep(0.1) print("time库") 解决方法: 第一步:在代码中添加导库代码 import time #…...
Web3网络生态中数据保护合规性分析
Web3网络生态中数据保护合规性分析 在这个信息爆炸的时代,Web3网络生态以其独特的去中心化特性,逐渐成为数据交互和价值转移的新平台。Web3,也被称为去中心化互联网,其核心理念是将数据的控制权归还给用户,实现数据的…...
【数学建模】模糊综合评价模型详解、模糊集合论简介
模糊综合评价模型详解 文章目录 模糊综合评价模型详解1. 模糊综合评价模型概述2. 模糊综合评价的基本原理2.1 基本概念2.2 评价步骤 3. 模糊综合评价的数学模型3.1 数学表达3.2 模糊合成运算 4. 模糊综合评价的应用领域5. 模糊综合评价的优缺点5.1 优点5.2 缺点 6. 模糊综合评价…...
C++ 语法之数组指针
一维数组: 如果我们定义了一个一维数组,那么这个数组名,就是指向第一个数组元素的地址,也即,是整个数组分配的内存空间的首地址。 比如 int a[3]; 定义了一个包含三个元素的数组。因为一个int占4个字节,那…...
从0到1在windows上用flutter开发android app(环境准备、创建项目、加速构建)
一、项目环境准备 1、设置环境变量 需配置以下两个核心环境变量,以替换官方资源链接为国内镜像: Windows系统(通过PowerShell或系统属性面板设置) # 临时生效(当前会话) $env:PUB_HOSTED_URL = "https://pub.flutter-io.cn" $env:FLUTTER_STORAGE_BA…...
PLY格式文件如何转换成3DTiles格式——使用GISBox软件实现高效转换
一、概述 在三维GIS和数字孪生领域,3DTiles格式已成为主流的数据格式之一。它由Cesium团队提出,专为大规模3D数据可视化设计,能够高效地加载和展示海量模型数据。而PLY格式则是一种常见的三维模型文件格式,主要用于存储点云数据或…...
Java定时任务的三重境界:从单机心跳到分布式协调
《Java定时任务的三重境界:从单机心跳到分布式协调》 本文将以生产级代码标准,揭秘Java定时任务从基础API到分布式调度的6种实现范式,深入剖析ScheduledThreadPoolExecutor与Quartz Scheduler的线程模型差异,并给出各方案的性能压…...
响应压缩导致的接口请求response没有响应体问题排查
目录 一、背景二、排查过程三、解决方法四、学习与思考-响应压缩(一)可能原因(二)深入排查(三)注意 一、背景 接口发布到测试环境,测试同学说没有数据 二、排查过程 1、本地用相同的参数、相…...
【Linux网络】手动部署并测试内网穿透
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
java项目之在线购物系统(源码+文档)
项目简介 在线购物系统实现了以下功能: 使用在线购物系统的用户分管理员和用户两个角色的权限子模块。 管理员所能使用的功能主要有:主页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等。 用户可以实现主页、个人中心、我的…...
【设计模式】C++ 单例模式总结与最佳实践
1. 单例模式简介 单例模式(Singleton Pattern) 是软件开发中常见的设计模式之一,主要用于 确保某个类只有一个实例,并提供一个全局访问点。常见的使用场景包括: 日志管理:全局唯一的日志记录器。数据库连…...
OO_Unit1
第一次作业 UML类图 代码复杂度分析 其中Expr中的toString方法认知复杂度比较高,主要源于多层条件嵌套和分散的字符串处理逻辑,重构时可重点关注这两部分的解耦。 代码量分析 1.”通用形式“ 我觉得我的设计的最大特点就是“通用形式”,具…...
重要重要!!fisher矩阵元素有什么含义和原理; Fisher 信息矩阵的形式; 得到fisher矩阵之后怎么使用
fisher矩阵元素有什么含义和原理 目录 fisher矩阵元素有什么含义和原理一、对角线元素( F i , i F_{i,i} Fi,i)的含义与原理二、非对角线元素( F i , j F_{i,j} Fi,j)的含义与原理Fisher 信息矩阵的形式矩阵的宽度有位置权重数量决定1. **模型参数结构决定矩阵维度**2.…...
[已解决]jupyter notebook报错 500 : Internal Server Error及notebook闪退
jupyter notebook出现如上图的报错,可以在黑色窗口中检查是为什么报错。 我检查发现是nbconvert导致的问题,卸载重装nbconvert。 但是这时候出现,jupyter notebook闪退问题。jupyter的黑色窗口出现一秒钟就没了。 在Anaconda Prompt中检查ju…...
2025年渗透测试面试题总结- 某亭-安全研究员(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 一、SQL注入过滤单引号绕过方法 二、MySQL报错注入常用函数 三、报错注入绕WAF 四、MySQL写文件函数…...
Redis分布式锁如何实现——简单理解版
目录 前言 满足条件 加锁之后产生的问题 避免死锁的方法 Lua脚本实现避免释放其他锁 看门狗判断过期 扩展 Lua脚本 Redission 前言 在如今开发的某些项目中,多个进程必须以互斥的方式独占共享资源,这时用分布式锁是最直接有效的,分布式…...
