首页 > 编程语言 >python画图|hist()函数深层体验

python画图|hist()函数深层体验

时间:2024-11-07 14:17:13浏览次数:7  
标签:定义 python 画图 hist xdata np ax

【1】引言

前述学习已经掌握hist()函数的基本运用技巧,可通过下述链接直达:

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

 python画图|hist()函数画直方图进阶-CSDN博客

我们已经理解hist()函数本质上画的是概率分布图,相关知识属于数理统计范畴,日常运用较多。为进一步实现运用自如,我们有必要继续探索。

【2】官网教程

官网实际上进一步给出了教程,点击下方链接直达:

https://matplotlib.org/stable/gallery/statistics/histogram_normalization.html#sphx-glr-gallery-statistics-histogram-normalization-py

这个链接指向的内容比较丰富,我们需要分几次才能学习完,为此我们耐心开始学习。

【3】代码解读

首先对第一个代码示例进行解读。

先引入动画和计算模块:

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

然后定义变量:

rng = np.random.default_rng(19680801) #定义数据发生器,方便定义array数组

xdata = np.array([1.2, 2.3, 3.3, 3.1, 1.7, 3.4, 2.1, 1.25, 1.3]) #定义自变量
xbins = np.array([1, 2, 3, 5]) #定义画图区间

之后定义了一个画图风格(这个定义可以随时灵活设置):

style = {'facecolor': 'none', 'edgecolor': 'C0', 'linewidth': 3} #定义画图风格,

之后定义画图并且画了两种图:

fig, ax = plt.subplots() #定义要画图
ax.hist(xdata, bins=xbins, **style) #画hist()图,画图的概率对象是xdata,直方图的边缘从xbins数组中取值,画图风格调用前述定义的style

# plot the xdata locations on the x axis:
ax.plot(xdata, 0*xdata, 'd') #用plot来画自变量xdata以增强对比

最后输出图形:

ax.set_ylabel('Number per bin') #设置Y轴标签
ax.set_xlabel('x bins (dx=1.0)') #设置X轴标签
plt.show() #输出图形

运行代码后的图形为:

图1

此时的完整代码为:

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

rng = np.random.default_rng(19680801) #定义数据发生器,方便定义array数组

xdata = np.array([1.2, 2.3, 3.3, 3.1, 1.7, 3.4, 2.1, 1.25, 1.3]) #定义自变量
xbins = np.array([1, 2, 3, 5]) #定义画图区间

# changing the style of the histogram bars just to make it
# very clear where the boundaries of the bins are:
style = {'facecolor': 'none', 'edgecolor': 'C0', 'linewidth': 3} #定义画图风格,

fig, ax = plt.subplots() #定义要画图
ax.hist(xdata, bins=xbins, **style) #画hist()图,画图的概率对象是xdata,直方图的边缘从xbins数组中取值,画图风格调用前述定义的style

# plot the xdata locations on the x axis:
ax.plot(xdata, 0*xdata, 'd') #用plot来画自变量xdata以增强对比
ax.set_ylabel('Number per bin') #设置Y轴标签
ax.set_xlabel('x bins (dx=1.0)') #设置X轴标签
plt.show() #输出图形

【4】代码修改

经过观察发现,区间[2,3]之间的数据较少,代码概率相对较低,为此增加一些自变量数据:

xdata = np.array([1.2, 2.3, 3.3, 3.1, 1.7, 3.4, 2.1, 1.25, 1.3,2.3,2.6,2.8]) #定义自变量
xbins = np.array([1, 2, 3, 5]) #定义画图区间 

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

图2

显然,中间部分[2,3]区间内的数据增占比大了。

进一步观察也会发现,直方图的高度实际上是该区间内出现数据的个数。

为此,我们继续尝试改写代码,让输出结果变成概率密度。

【5】概率密度density

我们尝试重新书写hist()函数,让density参数发挥作用:

ax.hist(xdata, bins=xbins, **style,density=True)

此时运行代码的输出结果为:

图3

图3输出结果已经是概率密度的形式。

【6】总结

学习了hist()函数的高阶运用技巧,理解了density参数具有输出概率密度的功能。

标签:定义,python,画图,hist,xdata,np,ax
From: https://blog.csdn.net/weixin_44855046/article/details/143592225

相关文章

  • 妙趣横生:Python 动画程序的实现与多样化拓展
    以下是另一个使用Python的pygame库实现的简单动画程序示例,实现了一个小球在窗口内反弹的动画效果,标题为《Python之Pygame实现小球反弹动画》:importpygame#初始化pygamepygame.init()#设置窗口大小width,height=640,480screen=pygame.display.set_mode((wid......
  • 基于Python的热门旅游景点数据分析系统的设计与实现
    ......
  • 如何使用Python进行数据分析
    数据分析是现代数据科学的核心组成部分,Python作为一种强大的编程语言,在数据分析的领域中已成为一项必备技能。本文将介绍如何使用Python进行数据分析,并提供一个简单的案例来帮助你入门。为什么选择PythonPython因其简单易学、功能强大而广受欢迎。以下是Python在数据分析中......
  • 杰卡德相似度矩阵python
    我整理的一些关于【Python】的项目学习资料(附讲解~~)和大家一起分享、学习一下: https://d.51cto.com/Hpqqk2使用Python计算杰卡德相似度矩阵在数据科学与机器学习的领域,相似度度量是一项重要的技术,广泛应用于推荐系统、聚类分析和信息检索等。杰卡德相似度(JaccardSimilarity)是用......
  • Python基础知识
    在用Python写代码的之前,对Python的基础知识是必须要会的,不然你可能会寸步难行。基础知识包括输入输出、变量、数据类型、表达式、运算符这5个方面。输入输出Python有很多函数,后面我们会细讲,但这里先将两个最基本的函数:输入和输出。输出函数print(),在前面我们已经用过了,语法......
  • 使用python编写一个获取token的接口
    importrequestsfromrequests.authimportHTTPBasicAuthdefget_token():"""获取token的逻辑"""url="https://devxxxxxxxxtion/v2/token"#替换为实际的token获取URLclient_id="hAixxxeMPNxxxxGjF......
  • python多进程万字详解!!!
    文章目录高效编程一、多任务原理二、进程1、概念2、使用进程3、全局变量在多个子进程中不能共享4、启动大量子进程5、map方法6、单进程与多进程复制文件对比7、进程间通信8、进程实现生产者消费者9、案例(抓取斗图)高效编程一、多任务原理概念现代操作系统比如Mac......
  • 淘宝商家电话采集工具 批量导出淘宝天猫商家联系方式软件 Python使用教程
    淘宝商家电话采集工具批量导出淘宝天猫商家联系方式软件Python使用教程作者V553813195以Python为例,下面是一个简单的教程,来介绍如何使用python语音进行淘宝天猫商家爬虫。首先,我们需要安装以下库:requests,beautifulsoup4。可以使用以下命令进行安装:pipinstallrequestspip......
  • python主观题自动阅卷系统
    基于python的语音识别与蓝牙通信的温控系统毕设项目大家好,我是俊星学长,一名在Java圈辛勤劳作的码农。今日,要和大家分享的是一款基于python主观题自动阅卷系统毕设项目。项目源码以及部署相关事宜,请联系小村学长,文末会附上联系信息哦。......
  • Python 中删除文件的几种方法
    传统的文件删除方法在开始介绍最Pythonic的删除文件方式之前,先来回顾一下传统的文件删除方法。通常,我们使用os模块提供的os.remove()函数来删除文件。但是,使用该函数时需要先判断文件是否存在,然后再进行删除操作。 下面是一个示例代码片段来展示传统的文件删除方法:importo......