直方图的绘制 基于python-matplotlib库

简介: 直方图的绘制 基于python-matplotlib库

文章目录

1.关于直方图

2 plt.hist()

3. 绘制一幅简单的 频数 分布直方图

4. 绘制一幅 频率 分布直方图

5. 累积分布直方图(水平方向)

1.关于直方图

直方图 也称 质量分布图,虽然看起来像柱状图,

实际上区别又很大。直方图通常横轴表示数据类型,纵轴表示各数据类型的分布情况。


直方图又可以分为频数分布直方图和频率分布直方图。其绘制方法并无多少差异,只是描述的事件有所不同。频数分布直方图描述的是某事件的数量,而频率分布则描述的是其发生的频率。


而关于频率分布直方图,又可以理解为是“密度图”的一种。频率分布直方图 和 密度图 都可以用来描述事件的概率分布,其中频率分布直方图描述的是离散型随机变量的概率分布,而密度图则描述的是连续型随机变量的概率分布。


2 plt.hist()

绘制直方图通过plt.hist()方法实现,其常用的参数有:


x 数据集

bins ------------- 统计数据的区间分布。可以是一个元素为数值的列表,也可以是一个数值。是一个数值的时候可以配合range参数使用。

range ----------- 元组类型,显示的区间。

当设置区间分布使用数值型的bins和range参数设定时:range确定一个范围,传入形式是一个元组(注意不是range范围对象),左右端点值都可取。数值型的bins表示将该范围分成的份数(等分)。

density --------- 布尔型,显示频率统计结果。默认为None(相当于False),设为False不显示频率统计结果;设为True则显示频率统计结果,即绘制出的图像由频数分布直方图变为频率分布直方图。

histtype -------- 可选参数,即直方图的类型。默认为bar,即绘制出的“柱状”条形。还可以设置为barstacked、step、stepfilled。

align -------------可选参数,控制柱状图的水平分布,设置值为left、mid 或 right,默认值为mid,也推荐使用mid。left和right会产生部分的空白区域。

log --------------- 布尔类型,默认为False,即y轴是否选择指数刻度。

stacked --------- 布尔类型,默认为False,表示是否为堆积柱状图。

edgecolor------- 设定边沿颜色

facecolor-------- 可以用来设定直方图的颜色,也可以简写为color。

orientation-------直方图的方向,默认为竖直方向上的(‘vertical’),设为’horizontal’则表示水平方向上的。

cumulative------默认为False,表示不累积。如果为True则设置累积分度直方图。


3. 绘制一幅简单的 频数 分布直方图

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] ='#cc00ff'
# 设定随机数种子为30
np.random.seed(30)
data = np.random.randint(0, 100, 100)
plt.hist(data, bins=[0, 25, 50, 75, 100], facecolor='#ffff00', edgecolor='#FF0000')
plt.xlabel('X指标')
plt.ylabel('样本个数')
plt.title('X指标频数分布直方图')
plt.show()

1.png

4. 绘制一幅 频率 分布直方图

将density设置为True即可·。


此外我们再修改一些细节,将histtype参数设置为stepfilled(梯状且填充)。

并把y轴的标签由“样本个数”改为“样本频率”。

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] ='#cc00ff'
np.random.seed(30)
data = np.random.randint(0, 100, 100)
plt.hist(data, bins=[0, 25, 50, 75, 100], facecolor='#ffff00', edgecolor='#FF0000', density=True, histtype='stepfilled')
plt.xlabel('X指标')
plt.ylabel('样本频率')
plt.title('X指标频数分布直方图')
plt.show()

图像效果如下:

1.png

5. 累积分布直方图(水平方向)

增加参数cumulative=True, orientation=‘horizontal’。

此外,因为图像变成了水平方向,所以也需要把x、y轴标签互换并稍作调整。

这里设置区间分布使用数值型的bins和range参数设定,范围为0-100,区间分割为10等份。

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] ='#cc00ff'
np.random.seed(30)
data = np.random.randint(0, 100, 100)
plt.hist(data, bins=10, range=(0, 100), facecolor='#ffff00', edgecolor='#FF0000', density=True, cumulative=True, orientation='horizontal')
plt.xlabel('样本累积频率')
plt.ylabel('X指标')
plt.title('X指标频数分布直方图')
plt.show()

图像效果如下:

1.png

目录
相关文章
|
20天前
|
存储 人工智能 测试技术
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
本文介绍如何使用LangChain结合DeepSeek实现多轮对话,测开人员可借此自动生成测试用例,提升自动化测试效率。
222 125
如何使用LangChain的Python库结合DeepSeek进行多轮次对话?
|
13天前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
63 0
|
3月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
6月前
|
JavaScript 前端开发 Java
通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等
通义灵码新上的外挂 Project Rules 获得了开发者的一致好评:最小成本适配我的开发风格、相当把团队经验沉淀下来,是个很好功能……
1159 103
|
2月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
116 18
|
3月前
|
JSON 网络安全 数据格式
Python网络请求库requests使用详述
总结来说,`requests`库非常适用于需要快速、简易、可靠进行HTTP请求的应用场景,它的简洁性让开发者避免繁琐的网络代码而专注于交互逻辑本身。通过上述方式,你可以利用 `requests`处理大部分常见的HTTP请求需求。
314 51
|
2月前
|
机器学习/深度学习 API 异构计算
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
JAX是Google开发的高性能数值计算库,旨在解决NumPy在现代计算需求下的局限性。它不仅兼容NumPy的API,还引入了自动微分、GPU/TPU加速和即时编译(JIT)等关键功能,显著提升了计算效率。JAX适用于机器学习、科学模拟等需要大规模计算和梯度优化的场景,为Python在高性能计算领域开辟了新路径。
180 0
JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
|
2月前
|
数据采集 存储 Web App开发
Python爬虫库性能与选型实战指南:从需求到落地的全链路解析
本文深入解析Python爬虫库的性能与选型策略,涵盖需求分析、技术评估与实战案例,助你构建高效稳定的数据采集系统。
252 0
|
2月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍了基于Python的剪贴板监控技术,结合clipboard-monitor库实现高效、安全的数据追踪。内容涵盖技术选型、核心功能开发、性能优化及实战应用,适用于安全审计、自动化办公等场景,助力提升数据管理效率与安全性。
103 0

热门文章

最新文章

推荐镜像

更多