数据可视化 —— 堆形图应用(大全)

一、案例一:温度堆积图

# 导入 matplotlib 库中的 pyplot 模块,这个模块提供了类似于 MATLAB 的绘图接口,
# 方便我们创建各种类型的可视化图表,比如折线图、柱状图、散点图等
import matplotlib.pyplot as plt
# 导入 numpy 库,它是 Python 中用于科学计算的基础库,提供了强大的多维数组对象和各种数学函数,
# 能高效地处理数值数据,在后续的绘图中可用于生成和处理坐标轴数据
import numpy as np# 创建一个新的图形窗口,该函数的参数解释如下:
# num='堆形图':设置图形窗口的标题为 '堆形图',方便我们识别当前打开的图形
# figsize=(12, 7):指定图形的大小,单位为英寸,这里图形的宽度为 12 英寸,高度为 7 英寸
# facecolor='w':设置图形窗口的背景颜色为白色,'w' 是白色的缩写
plt.figure(num='堆形图', figsize=(12, 7), facecolor='w')# matplotlib 默认的字体可能无法正确显示中文,所以我们通过修改 rcParams 参数来更改字体。
# 'font.sans-serif' 是用来指定无衬线字体的参数,这里将其设置为 'KaiTi'(楷体),
# 这样在绘制图形时,中文就能正常显示了
plt.rcParams['font.sans-serif'] = 'KaiTi'
# 设置图形中文字的字体大小为 15,这样可以让图形中的文字清晰易读
plt.rcParams['font.size'] = 15
# 在默认情况下,matplotlib 可能无法正确显示负号,将 'axes.unicode_minus' 参数设置为 False,
# 可以解决负号显示的问题,确保负号能在图形中正常显示
plt.rcParams['axes.unicode_minus'] = False# 定义 x 轴的数据,使用 numpy 的 array 函数创建一个一维数组,数组元素为字符串类型,
# 代表 5 个月份,后续会作为柱状图的 x 轴刻度
x = np.array(['1', '2', '3', '4', '5'])
# 定义最高温度的数据,同样使用 numpy 的 array 函数创建一维数组,
# 数组元素为整数类型,代表每个月对应的最高温度值
y1 = np.array([10, 8, 7, 11, 13])
# 定义最低温度的数据,创建一维数组,数组元素为整数类型,
# 代表每个月对应的最低温度值
y2 = np.array([9, 6, 5, 10, 12])# 定义误差数据,是一个列表,列表中的元素代表每个月最低温度数据的误差范围,
# 在绘制柱状图时,会使用这些误差数据来绘制误差线,以展示数据的不确定性
error = [2, 1, 2.5, 2, 1.5]# 定义柱状图的宽度,这里设置为 0.3,它会影响柱状图在 x 轴上的宽窄程度
bar_width = 0.3# 设置图形的标题,标题内容为 '5 个月的温度堆积柱形图',让读者一眼就能知道这个图形所展示的内容
plt.title('5个月的温度堆积柱形图')
# 设置 x 轴的标签,标签内容为 '月份',明确 x 轴数据所代表的含义
plt.xlabel('月份')
# 设置 y 轴的标签,标签内容为 '温度',明确 y 轴数据所代表的含义
plt.ylabel('温度')# 使用 for 循环遍历 x 和 y1 数据,zip 函数将 x 和 y1 中对应的元素一一配对,
# 每次循环取出一个月份和对应的最高温度值
for a, b in zip(x, y1):# 在每个最高温度柱状图的上方添加文本标签,用于显示具体的温度值。# plt.text 函数的参数解释如下:# a:文本标签的 x 坐标位置,即对应的月份# b + 1:文本标签的 y 坐标位置,在最高温度值的基础上向上偏移 1 个单位,使标签不与柱状图重叠# '%d' % b:将最高温度值格式化为整数形式的字符串,作为文本标签的内容# ha='center':设置文本的水平对齐方式为居中对齐,使标签在柱状图上方居中显示# va='center':设置文本的垂直对齐方式为居中对齐plt.text(a, b + 1, '%d' % b, ha='center', va='center')
# 绘制最高温度的柱状图,plt.bar 函数的参数解释如下:
# x:柱状图的 x 轴位置,即月份
# y1:柱状图的高度,即最高温度值
# width=bar_width:柱状图的宽度,使用之前定义的 bar_width 值
plt.bar(x, y1, width=bar_width)# 同样使用 for 循环遍历 x 和 y2 数据,将每个月份和对应的最低温度值配对
for a, b in zip(x, y2):# 在每个最低温度柱状图的上方添加文本标签,显示具体的温度值。# b - 1:文本标签的 y 坐标位置,在最低温度值的基础上向下偏移 1 个单位# va='baseline':设置文本的垂直对齐方式为基线对齐plt.text(a, b - 1, '%d' % b, ha='center', va='baseline')
# 绘制最低温度的柱状图,使其堆积在最高温度柱状图的上方。
# plt.bar 函数的参数解释如下:
# x:柱状图的 x 轴位置,即月份
# y2:柱状图的高度,即最低温度值
# bottom=y1:指定柱状图的底部位置,将最低温度柱状图堆积在最高温度柱状图上方
# width=bar_width:柱状图的宽度
# yerr = error:为柱状图添加误差线,误差范围由 error 列表指定
plt.bar(x, y2, bottom=y1, width=bar_width, yerr=error)# 为图形添加图例,图例用于说明图形中不同元素所代表的含义。
# 传入一个列表 ['最高温度', '最低温度'],分别对应之前绘制的最高温度和最低温度柱状图。
# shadow=True:为图例添加阴影效果,使其更具立体感
# fancybox=True:将图例的边框设置为圆角样式,让图例外观更美观
plt.legend(['最高温度', '最低温度'], shadow=True, fancybox=True)
# 显示绘制好的图形,调用该函数后,图形窗口会弹出显示绘制的温度堆积柱状图
plt.show()

 二、案例二:公司各部支出


import matplotlib.pyplot as plt
import pandas as pdplt.figure(num='图', figsize=(12, 6), facecolor='w')plt.rcParams['font.sans-serif'] = 'KaiTi'df = pd.read_excel('某公司各部门1—2月份实际支出.xlsx')# 从 DataFrame 中提取 '部门' 列的数据,作为柱状图的 x 轴标签
x = df['部门']# 定义误差棒的高度,这是一个列表,列表中的每个元素对应每个部门的误差值,后续绘制柱状图时会用到这些误差值来绘制误差棒
error = [1000, 200, 150, 100, 100, 500, 1000, 880]# 定义柱状图的宽度,该值会影响柱状图在 x 轴上的宽窄程度
bar_width = 0.4plt.title('某公司各部门1—2月份实际支出簇状柱形图', fontsize=20, fontproperties='SimHei')plt.ylabel('实际支出(元)', fontsize=15)# 使用 for 循环遍历 x 轴标签、1 月数据和 2 月数据,zip 函数将这三个序列中的对应元素一一配对
for a, b, c in zip(x, df['1月'], df['2月']):# 在每个 1 月支出柱状图的中间位置添加文本标签,显示具体的支出值# a:文本标签的 x 坐标位置,即部门名称对应的位置# b / 2:文本标签的 y 坐标位置,在 1 月支出值的一半高度处# '%d' % b:将 1 月支出值格式化为整数形式的字符串,作为文本标签的内容# ha='center':设置文本的水平对齐方式为居中对齐# va='center':设置文本的垂直对齐方式为居中对齐plt.text(a, b / 2, '%d' % b, ha='center', va='center')# 在每个 2 月支出柱状图的中间位置添加文本标签,显示具体的支出值# b + c / 2:文本标签的 y 坐标位置,在 1 月和 2 月支出总和的一半高度处plt.text(a, b + c / 2, '%d' % c, ha='center', va='center')# 绘制 1 月支出的柱状图
# x:柱状图的 x 轴位置,即部门名称
# df['1月']:柱状图的高度,即 1 月各部门的实际支出值
# width=bar_width:柱状图的宽度
# color='g':设置柱状图的颜色为绿色
plt.bar(x, df['1月'], width=bar_width, color='g')# 绘制 2 月支出的柱状图,使其堆积在 1 月支出柱状图的上方
# x:柱状图的 x 轴位置,即部门名称
# df['2月']:柱状图的高度,即 2 月各部门的实际支出值
# bottom=df['1月']:指定柱状图的底部位置,将 2 月支出柱状图堆积在 1 月支出柱状图上方
# yerr=error:为柱状图添加误差棒,误差范围由 error 列表指定
# width=bar_width:柱状图的宽度
# color='salmon':设置柱状图的颜色为鲑鱼色
plt.bar(x, df['2月'], bottom=df['1月'],  yerr=error, width=bar_width, color='salmon')# 为图形添加图例,说明不同颜色的柱状图所代表的含义
# ['1月', '2月']:传入一个列表,分别对应 1 月和 2 月支出的柱状图
plt.legend(['1月', '2月'])# 将绘制好的图形保存为图片文件,文件名为 '某公司堆图.png'
plt.savefig('某公司堆图.png')# 显示绘制好的图形,调用该函数后,图形窗口会弹出显示绘制的柱状图
plt.show()

三、案例三:不同产品销售额

 


import matplotlib.pyplot as plt
import pandas as pdplt.figure(num='图', figsize=(12, 8), facecolor='w')# 设置 matplotlib 使用的字体为楷体,以确保图形中的中文能正常显示,因为默认字体可能无法正确显示中文
plt.rcParams['font.sans-serif'] = 'KaiTi'
# 解决负号显示问题,默认情况下 matplotlib 可能无法正确显示负号,将该参数设置为 False 可解决此问题
plt.rcParams['axes.unicode_minus'] = Falsedf = pd.read_excel('不同产品各季度的销售额.xlsx')
# 从 DataFrame 中提取 '季度' 列的数据,作为柱状图的 x 轴标签
x = df['季度']
# 从 DataFrame 中提取 '产品A' 列的数据,作为产品 A 的销售额数据
y1 = df['产品A']
# 从 DataFrame 中提取 '产品B' 列的数据,作为产品 B 的销售额数据
y2 = df['产品B']
# 从 DataFrame 中提取 '产品C' 列的数据,作为产品 C 的销售额数据
y3 = df['产品C']plt.title('不同产品各季度的销售额', fontsize=20)plt.ylabel('销售额(元)', fontsize=14)plt.ylim(0, 12000)# 定义柱状图的宽度,该值会影响柱状图在 x 轴上的宽窄程度
bar_width = 0.3plt.bar(x, y3, width=bar_width)
plt.bar(x, y2, bottom=y3, width=bar_width)
plt.bar(x, y1, bottom=y2, width=bar_width)# 使用 for 循环遍历 x 轴标签、产品 C、产品 B 和产品 A 的销售额数据,zip 函数将这四个序列中的对应元素一一配对
for a, b, c, d in zip(x, y3, y2, y1):# 在产品 C 销售额柱状图的中间位置添加文本标签,显示具体的销售额值# a:文本标签的 x 坐标位置,即季度对应的位置# b / 2:文本标签的 y 坐标位置,在产品 C 销售额值的一半高度处# '%d' % b:将产品 C 销售额值格式化为整数形式的字符串,作为文本标签的内容# ha='center':设置文本的水平对齐方式为居中对齐plt.text(a, b / 2, '%d' % b, ha='center')# 在产品 B 销售额柱状图的中间位置添加文本标签,显示具体的销售额值# b + c / 2:文本标签的 y 坐标位置,在产品 C 和产品 B 销售额总和的一半高度处plt.text(a, b + c / 2, '%d' % c, ha='center')# 在产品 A 销售额柱状图的中间位置添加文本标签,显示具体的销售额值# b + c + d / 2:文本标签的 y 坐标位置,在产品 C、产品 B 和产品 A 销售额总和的一半高度处plt.text(a, b + c + d / 2, '%d' % d, ha='center')plt.legend(['产品A', '产品B', '产品C'], shadow=True, fancybox=True)plt.show()

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

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

相关文章

python工程中的包管理(requirements.txt)

pip install -r requirements.txtpython工程通过requirements.txt来管理依赖库版本,上述命令,可以一把安装依赖库,类似java中maven的pom.xml文件。 参考 [](

操作系统 3.4-段页结合的实际内存管理

段与页结合的初步思路 虚拟内存的引入: 为了结合段和页的优势,操作系统引入了虚拟内存的概念。虚拟内存是一段地址空间,它映射到物理内存上,但对用户程序是透明的。 段到虚拟内存的映射: 用户程序中的段首先映射到虚…

【Amazon EC2】为何基于浏览器的EC2 Instance Connect 客户端连接不上EC2实例

文章目录 前言📖一、报错先知❌二、问题复现😯三、解决办法🎲四、验证结果👍五、参考链接🔗 前言📖 这篇文章将讲述我在 Amazon EC2 上使用 RHEL9 AMI 时无法连接到 EC2 实例时所遇到的麻烦😖 …

Python学习笔记(二)(字符串)

文章目录 编写简单的程序一、标识符 (Identifiers)及关键字命名规则:命名惯例:关键字 二、变量与赋值 (Variables & Assignment)变量定义:多重赋值:变量交换:(很方便哟) 三、输入与输出 (In…

Hydra Columnar:一个开源的PostgreSQL列式存储引擎

Hydra Columnar 是一个 PostgreSQL 列式存储插件,专为分析型(OLAP)工作负载设计,旨在提升大规模分析查询和批量更新的效率。 Hydra Columnar 以扩展插件的方式提供,主要特点包括: 采用列式存储&#xff0c…

es的告警信息

Elasticsearch(ES)是一个开源的分布式搜索和分析引擎,在运行过程中可能会产生多种告警信息,以提示用户系统中存在的潜在问题或异常情况。以下是一些常见的 ES 告警信息及其含义和处理方法: 集群健康状态告警 信息示例…

健康与好身体笔记

文章目录 保证睡眠饭后百步走,活到九十九补充钙质一副好肠胃肚子咕咕叫 健康和工作的取舍 以前对健康没概念,但是随着年龄增长,健康问题凸显出来。 持续维护该文档,健康是个永恒的话题。 保证睡眠 一是心态要好,沾枕…

vue实现在线进制转换

vue实现在线进制转换 主要功能包括: 1.支持2-36进制之间的转换。 2.支持整数和浮点数的转换。 3.输入验证(虽然可能存在不严格的情况)。 4.错误提示。 5.结果展示,包括大写字母。 6.用户友好的界面,包括下拉菜单、输…

智体知识库:poplang编程语言是什么?

问:poplang语言是什么 Poplang 语言简介 Poplang(OPCode-Oriented Programming Language)是一种面向操作码(Opcode)的轻量级编程语言,主要用于智体(Agent)系统中的自动化任务处理、…

二分查找5:852. 山脉数组的峰顶索引

链接:852. 山脉数组的峰顶索引 - 力扣(LeetCode) 题解: 事实证明,二分查找不局限于有序数组,非有序的数组也同样适用 二分查找主要思想在于二段性,即将数组分为两段。本体就可以将数组分为ar…

下列软件包有未满足的依赖关系: python3-catkin-pkg : 冲突: catkin 但是 0.8.10-

下列软件包有未满足的依赖关系: python3-catkin-pkg : 冲突: catkin 但是 0.8.10- 解决: 1. 确认当前的包状态 首先,运行以下命令来查看当前安装的catkin和python3-catkin-pkg版本,以及它们之间的依赖关系: dpkg -l | grep ca…

深度学习:AI 大模型时代的智能引擎

当 Deepspeek 以逼真到难辨真假的语音合成和视频生成技术横空出世,瞬间引发了全球对 AI 伦理与技术边界的激烈讨论。从伪造名人演讲、制造虚假新闻,到影视行业的特效革新,这项技术以惊人的速度渗透进大众视野。但在 Deepspeek 强大功能的背后…

医学分割新标杆!双路径PGM-UNet:CNN+Mamba实现病灶毫厘级捕捉

一、引言:医学图像分割的挑战与机遇 医学图像分割是辅助疾病诊断和治疗规划的关键技术,但传统方法常受限于复杂病理特征和微小结构。现有深度学习模型(如CNN和Transformer)虽各有优势,但CNN难以建模长距离依赖&…

CV - 目标检测

物体检测 目标检测和图片分类的区别: 图像分类(Image Classification) 目的:图像分类的目的是识别出图像中主要物体的类别。它试图回答“图像是什么?”的问题。 输出:通常输出是一个标签或一组概率值&am…

高并发秒杀系统设计:关键技术解析与典型陷阱规避

电商、在线票务等众多互联网业务场景中,高并发秒杀活动屡见不鲜。这类活动往往在短时间内会涌入海量的用户请求,对系统架构的性能、稳定性和可用性提出了极高的挑战。曾经,高并发秒杀架构设计让许多开发者望而生畏,然而&#xff0…

蓝桥杯--结束

冲刺题单 基础 一、简单模拟(循环数组日期进制) (一)日期模拟 知识点 1.把月份写为数组,二月默认为28天。 2.写一个判断闰年的方法,然后循环年份的时候判断并更新二月的天数 3.对于星期数的计算&#…

13、nRF52xx蓝牙学习(GPIOTE组件方式的任务配置)

下面再来探讨下驱动库如何实现任务的配置,驱动库的实现步骤应该和寄存器方式对应,关 键点就是如何调用驱动库的函数。 本例里同样的对比寄存器方式编写两路的 GPOITE 任务输出,一路配置为输出翻转,一路设 置为输出低电平。和 …

Java的基本语法(1)

一、运算符和表达式 举例说明什么是运算符,什么是表达式: int a 1; int b 2; int c a b; 在这个例子当中,是运算符,并且是算术运算符 ab是表达式,因为是运算符,所以ab是算术表达式 1.1算术运算符 …

C++学习之密码学知识

目录 1.文档介绍 2.知识点概述 3.项目准备 4.序列化介绍 5.项目中基础组件介绍 6.基础模块在项目中作用 7.项目中其他模块介绍 8.加密三要素 9.对称加密和非堆成加密 10.对称和非对称加密特点 11.堆成加密算法des 12.des对称加密算法 13.对称加密算法aes 14.知识点…

安装vllm

ubuntu 22.04, RTX3080, cuda 12.1, cudnn 8.9.7,cuda和cudnn的安装参考:https://blog.csdn.net/m0_52111823/article/details/147154526?spm1001.2014.3001.5501。 查看版本对应关系,下载12.1对应的whl包,https://github.com/vl…