iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >基于Python+Matplotlib怎么实现直方图的绘制
  • 114
分享到

基于Python+Matplotlib怎么实现直方图的绘制

2023-06-30 04:06:39 114人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

今天小编给大家分享一下基于python+Matplotlib怎么实现直方图的绘制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧

今天小编给大家分享一下基于python+Matplotlib怎么实现直方图的绘制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

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 pltimport numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.rcParams['axes.facecolor'] ='#cc00ff'# 设定随机数种子为30np.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()

基于Python+Matplotlib怎么实现直方图的绘制

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

将density设置为True即可·。

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

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

import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.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()

图像效果如下:

基于Python+Matplotlib怎么实现直方图的绘制

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

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

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

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

import matplotlib.pyplot as pltimport numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falseplt.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()

图像效果如下:

基于Python+Matplotlib怎么实现直方图的绘制

以上就是“基于Python+Matplotlib怎么实现直方图的绘制”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

--结束END--

本文标题: 基于Python+Matplotlib怎么实现直方图的绘制

本文链接: https://www.lsjlt.com/news/327309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作