python画图|hist()函数画直方图进阶

【1】引言

前序已经学习了hist()函数画直方图的基础教程,相关文章见下述链接:

python画图|hist()函数画直方图初探-CSDN博客

在这里我们初步认识了hist()函数,并使用该函数画出了8个直方图。

之后又用bar()函数进行对比,同时输出了两种直方图。

继续研究将会发现:hist()函数绘制直方图的时候,和bar()函数一致,需要约定X轴,但是hist()函数无需指明方块的高度,bar()函数需要指明方块高度。

为此,我们有必要继续研究一下,hist()函数画的直方图高度从何而来?

【2】官网教程

首先是到达hist()函数画图画图官网:

https://matplotlib.org/stable/plot_types/stats/hist_plot.html#sphx-glr-plot-types-stats-hist-plot-py

然后直接点击ax.hist()函数,会直接跳转到新链接:

https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.hist.html#matplotlib.axes.Axes.hist

然而即使到这里,也不能很快理解直方图的高度该如何理解。

然后我点击了 np.random.normal()函数,这本是一个无意之举,但却进入下述链接,帮助揭露了真相。

https://numpy.org/doc/stable/reference/random/generated/numpy.random.normal.html#numpy.random.normal

上述链接说明,  np.random.normal()函数按照正态分布的形式生成了随机数。

这启发我进一步探索。

【3】修改代码

首先把随机数的数量改为100个:

x = 4 + np.random.normal(0, 1.5, 100)

然后把输出直方图的边线从白色改为红色来加大辨识度,此外增设rwidth来控制方块间距。

ax.hist(x, bins=8, linewidth=0.5,rwidth=0.5, edgecolor="r")

运行代码后的输出图形为:

图1

图1以4为中心,左右基本呈对称布置,很像一个正态分布图形。

为此继续加大绘制出的直方图数量:把bins改为80。

ax.hist(x, bins=80, linewidth=0.5,rwidth=0.5, edgecolor="r")

新图像如下:

图2

图2整体上依然保持了正态分布的趋势,在这里以4为中心,可以理解为其来源于下述代码:

x=4+np.random.normal(0, 1.5, 100)

在图2我们发现直方图高度变小了。

对比图1和图2,隐约可以发现:直方图的高度数值相加总和=100。

【4】hist()参数正态分布关系理解

我们现在回到hist()函数定义的官网页面,重新理解这句话:

https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.hist.html#matplotlib.axes.Axes.hist

This method uses numpy.histogram to bin the data in x and count the number of values in each bin, then draws the distribution either as a BarContainer or Polygon. The bins, range, density, and weights parameters are forwarded to numpy.histogram.

上述话语的意思是:hist()函数绘制的是x在所有自变量数据中出现的频率。

所以,hist()函数会自动输出x的频率即直方图高度。

有了这层理解,大胆做测试:输出一万个直方图

图3

至此的完整代码为为:

import matplotlib.pyplot as plt
import numpy as np

#plt.style.use('_mpl-gallery')

# make data
np.random.seed(1)
x = 4 + np.random.normal(0, 1.5, 10000)

#print('x=',x)

# plot:
fig, ax = plt.subplots()

ax.hist(x, bins=10000, linewidth=0.5,rwidth=0.5, edgecolor="y")

#ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
       #ylim=(0, 56), yticks=np.linspace(0, 56, 9))

plt.show()

【5】总结

理解了hist()函数中直方图高度的意义。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐一款非常好用的C/C++在线编译器

C/C作为一门底层、高效的编程语言,广泛应用于系统开发、游戏引擎、嵌入式系统等领域。然而,C/C的开发环境配置会让开发者把部分时间消耗在这件事上,也经常会遇到各种各样的环境问题。 本地开发的痛点 环境配置复杂:C/C的开发环境…

kafka如何获取 topic 主题的列表?

大家好,我是锋哥。今天分享关于【kafka如何获取 topic 主题的列表?】面试题?希望对大家有帮助; kafka如何获取 topic 主题的列表? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,可以…

用示例来看C2Rust工具的使用和功能介绍

C2Rust可以将C语言的源代码转换成Rust语言的源代码。下面是一个简单的C语言代码示例&#xff0c;以及使用c2Rust工具将其转换为Rust安全代码的过程。 C语言源代码示例 // example.c #include <stdio.h>int add(int a, int b) {return a b; }int main() {int result a…

数据结构排序之直接选择排序--堆排序

堆排序 堆排序 (Heapsort) 是指利用堆积树&#xff08;堆&#xff09;这种数据结构所设计的一种排序算法&#xff0c;它是选择排序的一种。它是通过堆来进行选择数据。需要注意的是排升序要建大堆&#xff0c;排降序建小堆。 直接选择排序的特性总结&#xff1a; 1. 堆排序使…

使用DJL和PaddlePaddle的口罩检测详细指南

使用DJL和PaddlePaddle的口罩检测详细指南 完整代码 该项目利用DJL和PaddlePaddle的预训练模型&#xff0c;构建了一个口罩检测应用程序。该应用能够在图片中检测人脸&#xff0c;并将每张人脸分类为“戴口罩”或“未戴口罩”。我们将深入分析代码的每个部分&#xff0c;以便…

【go从零单排】go三种结构体:for循环、if-else、switch

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力&#xff0c;虚度你的光阴&#xff0c;每天迈出一小步&#xff0c;回头时发现已经走了很远。 for循环是go语言唯一的循环语句&#xff0c;没错&#xff0c;在go中再也不会看到while true package mainimport …

python怎么去掉换行符

换行符与其他字符并没有区别&#xff0c;由于换行符总是最后一个字符&#xff0c;所以直接选择除去最后一个字符的所有字符即可。 x abc\n x[:-1] 也可以使用字符串的strip()方法 但是strip()方法除了会去掉换行符&#xff0c;还会去掉空格等其他字符。 x.strip()

集中管理用户名和密码,定期修改密码快捷方便

在运维工作中&#xff0c;凭证管理是一项至关重要的任务。随着系统复杂性的增加和安全性要求的提高&#xff0c;如何有效地管理用户名和密码成为了运维团队面临的一大挑战。本文将介绍新版本中的凭证管理功能&#xff0c;并探讨其在运维行业中的应用和最佳实践。 一、凭证管理…

十年码农的编程心得分享

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Elasticsearch中时间字段格式用法详解

Elasticsearch中时间字段格式用法详解 攻城狮Jozz关注IP属地: 北京 2024.03.18 16:27:51字数 758阅读 2,571 Elasticsearch&#xff08;简称ES&#xff09;是一个基于Lucene构建的开源、分布式、RESTful搜索引擎。它提供了全文搜索、结构化搜索以及分析等功能&#xff0c;广泛…

【研究报告】2024年中国工业大模型行业发展研究报告

需要行业报告PDF的朋友请点击下方免费获取 报告聚焦于中国工业大模型的发展现状&#xff0c;详细分析了其在工业领域的应用与前景。工业大模型借助人工智能技术优化了制造流程、提升了生产效率&#xff0c;尤其在能源、制造、自动化等领域取得了显著成果。报告指出&#xff0c…

PLC单键启停控制的多种写法

题目&#xff1a;编写程序&#xff0c;实现当按下SB1按钮奇数次&#xff0c;灯亮&#xff1b;当按下SB1按钮偶数次&#xff0c;灯灭&#xff0c;即单键启停控制&#xff0c;设计梯形图。 解法一&#xff1a;使用标志位进行自锁互锁 &#xff08;1&#xff09;刚上电&#xff0c…

vit及其变体(swin Deit)

参考&#xff1a;https://www.zhihu.com/question/538049269/answer/2773898603 ViT模型变体&#xff1a;DeiT模型&#xff08;Data-Efficient Image Transformer&#xff09;&#xff1b;Swin Transformer模型 &#xff08;Shifted Windows Transformer&#xff09;&#xff1…

盲盒潮玩小程序,盲盒市场的巨大商业机遇!

近几年&#xff0c;盲盒展现出了强劲的发展态势&#xff0c;成为了消费者热衷的娱乐消费方式&#xff0c;各种大热IP在市场中大放异彩&#xff01;在网络中&#xff0c;关于盲盒的讨论度更是持续火热&#xff0c;显而易见&#xff0c;盲盒成为了一个不容小觑的行业&#xff01;…

聊一聊Elasticsearch的索引的分片分配机制

1、什么是分片分配 分片分配是由ES主节点将索引分片移动到ES集群中各个节点上的过程。 该过程尽量保证&#xff0c;同一个索引的分片尽量分配到更多的节点上&#xff0c;以此来达到读写索引的时候可以利用更多硬件资源的效果。 在分配过程当中&#xff0c;也不能将某个主分片…

DAY21|二叉树Part08|LeetCode: 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

目录 LeetCode: 669. 修剪二叉搜索树 基本思路 C代码 LeetCode: 108.将有序数组转换为二叉搜索树 基本思路 C代码 LeetCode: 538.把二叉搜索树转换为累加树 基本思路 C代码 LeetCode: 669. 修剪二叉搜索树 力扣代码链接 文字讲解&#xff1a;LeetCode: 669. 修剪二叉搜…

Halcon edges_sub_pix

1、算子帮助文档 edges_sub_pix 使用递归实现的滤波器&#xff08;根据Deriche、Lanser和Shen的方法&#xff09;或Canny提出的常规实现的“高斯导数”滤波器&#xff08;使用滤波器掩模&#xff09;来检测阶梯边缘。因此&#xff0c;以下边缘算子可用于滤波器&#xff1a; der…

SpringBoot配置Rabbit中的MessageConverter对象

SpringAMQP默认使用SimpleMessageConverter组件对消息内容进行转换 SimpleMessageConverter&#xff1a; only supports String, byte[] and Serializable payloads仅仅支持String、Byte[]和Serializable对象Jackson2JsonMessageConverter&#xff1a;was expecting (JSON Str…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-30目录1. Step Guided Reasoning: Improving Mathematical Reasoning using Guidance Generation and Step Reasoning摘要研究背…

LabVIEW在Windows和Linux开发的差异

LabVIEW广泛应用于工程和科研领域的自动化和测量控制系统开发&#xff0c;其在Windows和Linux平台上的开发环境有所不同。这些差异主要体现在操作系统兼容性、硬件支持、软件库和驱动程序、实时系统开发以及部署选择上。以下从各个方面详细对比分析LabVIEW在Windows与Linux系统…