脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 基于Python+Matplotlib实现直方图的绘制

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

2022-11-30 11:12侯小啾 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. 绘制一幅简单的 频数 分布直方图

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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()

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

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

将density设置为True即可·。

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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()

图像效果如下:

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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()

图像效果如下:

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

到此这篇关于基于Python+Matplotlib实现直方图的绘制的文章就介绍到这了,更多相关Python Matplotlib直方图内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_48964486/article/details/124093695

延伸 · 阅读

精彩推荐
  • PythonPython设计模式之MVC模式简单示例

    Python设计模式之MVC模式简单示例

    这篇文章主要介绍了Python设计模式之MVC模式,简单介绍了MVC模式的概念、原理,并结合实例形式给出了Python实现与使用MVC模式的相关操作技巧,需要的朋友可以...

    李自泰8982021-01-03
  • PythonPython中表达式x += y和x = x+y 的区别详解

    Python中表达式x += y和x = x+y 的区别详解

    这篇文章主要跟大家介绍了关于Python中x += y和x = x+y 的区别的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友...

    hooog20012020-11-19
  • Pythonpython opencv实现影像拼接

    python opencv实现影像拼接

    这篇文章主要介绍了python opencv实现影像拼接,主要包括内容又垂直影像拼接vconcat和水平影像拼接hconcat以及纵向拼接多个不同图片,下面详细的相关内容...

    kuokay9472022-10-23
  • Pythonpython字符串操作详析

    python字符串操作详析

    这篇文章主要介绍了python字符串操作,字符串是不可变类型可以重新赋值,但不可以索引改变其中一个值,只能拼接字符串建立新变量,下面来了解具体内...

    Silva728322022-09-16
  • PythonPython Pandas学习之Pandas数据结构详解

    Python Pandas学习之Pandas数据结构详解

    Pandas中一共有三种数据结构,分别为:Series、DataFrame和MultiIndex(老版本中叫Panel )。其中Series是一维数据结构,DataFrame是二维的表格型数据结构,MultiInd...

    Dragon少年7492022-10-13
  • Pythonpython利用thrift服务读取hbase数据的方法

    python利用thrift服务读取hbase数据的方法

    今天小编就为大家分享一篇python利用thrift服务读取hbase数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    yan26118042021-05-08
  • Python利用Python第三方库实现预测NBA比赛结果

    利用Python第三方库实现预测NBA比赛结果

    今天给大家带来的是关于Python的相关知识,文章围绕着利用Python实现预测NBA比赛结果展开,文中有非常详细的介绍,需要的朋友可以参考下...

    weixin_4364969110842021-12-06
  • Python根据tensor的名字获取变量的值方式

    根据tensor的名字获取变量的值方式

    今天小编就为大家分享一篇根据tensor的名字获取变量的值方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    coderwangson4252020-05-10