python画图|水平直方图绘制

news/2024/9/17 9:02:42/ 标签: python, 开发语言

前序学习过程中,我们一起研究了:

【a】直方图绘制基础教程:python画图|直方图绘制教程-CSDN博客

【b】 直方图绘制进阶教程:python画图|直方图绘制教程进阶-CSDN博客

【c】 堆叠直方图绘制教程:python画图|堆叠直方图绘制-CSDN博客

【d】并列直方图绘制教程: python画图|并列直方图绘制-CSDN博客

今天,我们再学习一个系列:水平直方图绘制教程。

【1】官网教程

养成学习的好习惯,先到官网看看是啥模样:https://matplotlib.org/stable/gallery/lines_bars_and_markers/barh.html

图1

由图1可见,horizontal bar chart有单独的一章,我们从这里进入学习模式。 

【2】代码解读

官网代码依旧稳定输出,请出matplotlib模块画图、numpy模块做数学计算。

import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

然后定义了一堆随机数:

np.random.seed(19680801) #随机数种子,用于生成随机数

为了认识【np.random.seed(19680801) #随机数种子,用于生成随机数】这个命令,我们新写一段代码,输出结果。

新代码包括两部分,一部分不定义随机数种子,直接生成随机数;另一部分先定义随机数种子,然后再生成随机数(每次生成随机数前,均需要定义随机数种子),代码如下:

python">import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算#未定义随机数种子,直接生成随机数
#error = np.random.rand(3) #直接生成随机数
#print('error=',error) #输出随机数
# Fixing random state for reproducibility
#error11 = np.random.rand(6) #完成随机数种子定义后,再生成随机数
#print('error11=',error11) #输出随机数
#error22 = np.random.rand(8) #完成随机数种子定义后,再生成随机数
#print('error22=',error22) #输出随机数#先定义随机数种子,再生成随机数
np.random.seed(19680801)#随机数种子,完成该定义后可生成随机数
error0 = np.random.rand(3) #随机数种子,完成该定义后可生成随机数
print('error0=',error0) #输出随机数
np.random.seed(19680801)#随机数种子,完成该定义后可生成随机数
error1 = np.random.rand(6) #随机数种子,完成该定义后可生成随机数
print('error1=',error1) #输出随机数
np.random.seed(19680801)#随机数种子,完成该定义后可生成随机数
error2 = np.random.rand(8) #随机数种子,完成该定义后可生成随机数
print('error2=',error2) #输出随机数

运行后的输出结果为:

图2

由图2可见:

未定义随机数种子 np.random.seed(),生成的随机数彼此之间不同;

定义了随机数种子np.random.seed(),生成的随机数是从特定的库里输出的。

这提醒我们,定义随机数种子对生成随机数有重要影响。

继续解读官网代码:定义画图

fig, ax = plt.subplots() #画图,用ax控制坐标轴属性

然后定义了画图的类别people;y_pos就是画水平直方图的时候,各方块对应y轴的坐标;performance是数学值;error是随机数。

# Example data
people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim') #定义了直方图类别,一共5类
y_pos = np.arange(len(people)) #赋值,y_pos按照顺序从[ 0 1 2 3 4]中取值
performance = 3 + 10 * np.random.rand(len(people)) #np.random.rand(len(people))生成五个随机数,然后与3相乘再加5
error = np.random.rand(len(people)) #输出np.random.rand(len(people))生成的五个随机数

然后定义了画直方图。

python">ax.barh(y_pos, performance, xerr=error, align='center') #ax调用barh()画水平直方图
# y_pos是各方块对应Y轴位置;performance是各方块的具体数值;
# xerr代表误差,会在方块上直接画出;align标签位置,即方块基底对应Y轴哪个位置
ax.set_yticks(y_pos, labels=people) #设定画图的Y轴,标签从people中选取
ax.invert_yaxis()  # labels read top-to-bottom 把标签放置在Y轴,自上而下
ax.set_xlabel('Performance') #设定X轴名称为Performance
ax.set_title('How fast do you want to go today?') #设定图名为How fast do you want to go today?plt.show() #输出图形

输出结果为:

图3

由图3可见,输出的水平直方图没有图例,也没有在图形中显示各部分所代表的数值,因此需要改写。

【3】代码改写-增加ax.bar_label()

由于ax.bar_label()需要指定直方图,因此先定义hbars。可以理解为hbars代表了方块

hbars=ax.barh(y_pos, performance, xerr=error, align='center') #ax调用barh()画水平直方图
# y_pos是各方块对应Y轴位置;performance是各方块的具体数值;
# xerr代表误差,会在方块上直接画出;align标签位置,即方块基底对应Y轴哪个位置

然后增加一条代码:

ax.bar_label(hbars,padding=3) #

此时输出结果为:

图4

由图4可见,各方块的实际数据已经显示。

【4】代码改写-增加颜色bar_colors

颜色模块需要单独设定,在hbars前增加一条代码:

bar_colors = ['tab:red', 'tab:blue', 'tab:purple', 'tab:orange', 'tab:green'] #设置方块颜色

此时的输出结果为:

图5

由图5可见,不同方块颜色不同。

【6】总结

本文学习了水平直方图绘制,各方块代表数值显示和方块颜色自由设定。


http://www.ppmy.cn/news/1522827.html

相关文章

【JavaEE初阶】多线程(3)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 线程状态 线程安全 代码示例 解释 总结原因 解决方案-->加锁 t1和t2都加锁 且 同一个锁对象 t1和t2中只有一个加锁了 t1和t2都加锁,但锁对象不同 加锁 与线程等待…

35天学习小结

距离上次纪念日,已经过去了35天咯 算算也有5周了,在这一个月里,收获的也挺多,在这个过程中认识的大佬也是越来越多了hh 学到的东西,其实也没有很多,这个暑假多多少少还是有遗憾的~ 第一周 学习了一些有…

图像处理与编辑软件Adobe Photoshop(PS)2024WIN/MAC下载及安装教程

目录 一、软件概述 1.1 Photoshop 简介 1.2 主要功能 二、下载与安装 2.1 下载 2.2 安装步骤 2.3 注意事项 三、系统要求 3.1 硬件要求 3.2 操作系统 四、操作指南 4.1 基础操作 4.2 进阶技巧 4.3 高效工作 一、软件概述 1.1 Photoshop 简介 Adobe Photoshop&a…

Android13 Hotseat客制化--去掉hotseat(热座)

需求:有些项目不要热座,要求去掉热座 以前的做法是把DeviceProfile里与hotseat有关的变量改为0之类的,改动比较大。为什么不通过简单的把mHotseat设置为GONE呢 因为在各种视图变化的时候,会把hotseat再次显示出来,因…

Spark的一些高级用法

Java 中实现 Spark 的一些高级用法。 1. 使用 DataFrame 和 Spark SQL 在 Spark 中,使用 DataFrame 来处理结构化数据并执行 SQL 查询是非常常见的。 import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.Spark…

2024高教社杯数学建模国赛ABCDE题选题建议+初步分析

提示&#xff1a;DS C君认为的难度&#xff1a;C<B<A&#xff0c;开放度&#xff1a;A<C<B 。 D、E题推荐选E题&#xff0c;后续会直接更新E论文和思路&#xff0c;不在这里进行选题分析&#xff0c;以下为A、B、C题选题建议及初步分析 A题&#xff1a;“板凳龙”…

RPC使用的关键技术

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是分布式系统中常用的一种通信方式&#xff0c;它允许程序调用位于不同计算机上的方法或函数&#xff0c;就像调用本地方法一样。为了实现这种透明且高效的远程调用&#xff0c;RPC 框架依赖于多种关…

【软件设计】常用设计模式--策略模式

软件设计模式&#xff08;三&#xff09; 策略模式&#xff08;Strategy Pattern&#xff09;1. 概念2. 模式结构3. UML 类图4. 实现方式C# 示例步骤1&#xff1a;定义策略接口步骤2&#xff1a;实现具体策略类步骤3&#xff1a;实现上下文类步骤4&#xff1a;使用策略模式 Jav…

驱动(RK3588S)第八课时:平台设备总线

目录 目标一、平台设备总线的概念1、什么是平台设备总线2、平台设备总线 platform 的匹配3、设备树和平台设备总线的关系&#xff0c;以及匹配 二、平台设备总线的函数接口1、注册设备端的资源信息2、设备端提供的资源的信息3、注销申请的设备端的资源4、驱动端的函数&#xff…

逻辑表达式,最小项

目录 得到此图的逻辑电路 1.画出它的真值表 2.根据真值表写出逻辑式 3.画逻辑图 逻辑函数的表示 逻辑表达式 最小项 定义 基本性质 最小项编号 最小项表达式 得到此图的逻辑电路 1.画出它的真值表 这是同或的逻辑式。 2.根据真值表写出逻辑式 3.画逻辑图 有两种画法…

Android Fragment 学习备忘

1.fragment的动态添加与管理&#xff0c;fragment生命周期在后面小节&#xff1a;https://www.bilibili.com/video/BV1Ng411K7YP/?p37&share_sourcecopy_web&vd_source982a7a7c05972157e8972c41b546f9e4https://www.bilibili.com/video/BV1Ng411K7YP/?p37&share_…

Python 读取 Excel 数据|数据处理|Pandas|Excel操作

目录 1. 为什么选择 Python 读取 Excel 数据 2. Python 读取 Excel 数据的基本工具 2.1 Pandas 库 2.2 Openpyxl 库 2.3 xlrd 库 3. 读取 Excel 文件的高级操作 3.1 读取特定的工作表 3.2 读取特定的列和行 3.3 处理缺失数据 4. 实践应用示例 4.1 数据分析和可视化 …

ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名

前言 当我们需要把本地开发的应用展示给外部用户时&#xff0c;常常会因为无法直接访问而陷入困境。 就为了展示一下&#xff0c;买服务、域名&#xff0c;搭环境&#xff0c;费钱又费事。 那有没有办法&#xff0c;让客户直接访问自己本机开发的应用呢&#xff1f; 这种需…

表格多列情况下,loading不显示问题

问题描述&#xff1a; 用element plus 做得表格&#xff0c;如下图&#xff0c;列数较多&#xff0c;且部分表格内容显示比较复杂&#xff0c;数据量中等的情况下&#xff0c;有一个switch 按钮&#xff0c;切换部分列的显示和隐藏&#xff0c;会发现&#xff0c;切换为显示的时…

逻辑运算基础知识

关系运算符 <:小于 <:小于等于 >:大于 >:大于等于 以上优先级相同&#xff1a;高 &#xff1a;等于 !&#xff1a;不等于 以上优先级相同&#xff1a;低 说明&#xff1a; 关系运算符的 优先级 低于 算数运算符 关系运算符的 优先级 大于 赋值运算符 逻辑运算&a…

前向渲染路径

1、前向渲染路径处理光照的方式 前向渲染路径中会将光源分为以下3种处理方式&#xff1a; 逐像素处理&#xff08;需要高等质量处理的光&#xff09;逐顶点处理&#xff08;需要中等质量处理的光&#xff09;球谐函数&#xff08;SH&#xff09;处理&#xff08;需要低等质量…

如何使用 PHP 函数与其他 Web 服务交互?

在 PHP 中&#xff0c;我们可以使用 cURL 或者 file_get_contents 函数与其他 Web 服务进行交互。 使用 cURL 函数 cURL 是一个库&#xff0c;它允许你使用各种类型的协议来发送数据&#xff0c;并从服务器获取数据。 $curl curl_init(‘http://example.com/api’); curl_s…

SprinBoot+Vue漫画天堂网的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

前端框架有哪些?以及每种框架的详细介绍

目录 前言1. React2. Vue.js3. Angular4. Bootstrap5. Foundation总结 前言 前端框架是Web开发中不可或缺的工具&#xff0c;它们为开发者提供了丰富的工具和抽象&#xff0c;使得构建复杂的Web应用变得更加容易。当前&#xff0c;前端框架种类繁多&#xff0c;其中一些最受欢…

【全网最全】2024年数学建模国赛A题30页完整建模文档+17页成品论文+保奖matla代码+可视化图表等(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片那是获取资料的入口&#xff01; 【全网最全】2024年数学建模国赛A题30页完整建模文档17页成品论文保奖matla代码可视化图表等&#xff08;后续会更新&#xff09;「首先来看看目前已有的资料&#xff0…