Matplotlib 直方图中设置相对频率

Matplotlib 直方图中设置相对频率

阅读更多:Matplotlib 教程

介绍

Matplotlib是一个Python的可视化库,可以用来创建各种类型的图形,包括直方图。直方图是一种非常常见的可视化工具,可以用来展示数据的分布情况。Matplotlib直方图的默认设置是绘制每个bin(直方图中的一个条带)的数量,但有时候我们需要显示每个bin的相对频率。本文将介绍如何在Matplotlib直方图中设置相对频率。

示例数据

我们将使用Iris数据集作为示例数据。Iris数据集包含了三个不同品种的鸢尾花(setosa、versicolor和virginica)的花萼长度(sepal length)和花瓣长度(petal length)。我们将仅使用花瓣长度这一列数据来展示如何设置相对频率。

import seaborn as sns

iris = sns.load_dataset('iris')

petal_length = iris['petal_length']

绘制默认直方图

第一步是绘制默认直方图。下面的代码将绘制花瓣长度的默认直方图。

import matplotlib.pyplot as plt

plt.hist(petal_length)
plt.show()

该直方图的x轴是花瓣长度,y轴是每个bin的数量。

设置相对频率

要在Matplotlib直方图中设置相对频率,我们需要在plt.hist()函数中使用density参数。density参数默认值为False,表示每个bin的值是样本数量。如果将density参数设置为True,则将每个bin的值除以样本总数,得到每个bin的相对频率。

plt.hist(petal_length, density=True)
plt.show()

现在的y轴显示的是每个bin的相对频率,表示每个bin中的样本占样本总数的比例。

设置bin数量

默认情况下,Matplotlib根据数据值的范围自动将数据分成一些bin。这个分割的数量称为bin数量(bins)。默认值为10。我们也可以手动设置bin数量。

plt.hist(petal_length, density=True, bins=20)
plt.show()

上面的代码将直方图的bin数量设置为20。

设置bin边界

Matplotlib默认情况下将数据范围等分成一些bin。我们也可以手动设置每个bin的边界。要设置多个边界,请将边界值放入一个列表中,并将列表传递给bins参数。

bins = [1, 2, 3, 4, 5, 6]

plt.hist(petal_length, density=True, bins=bins)
plt.show()

上面的代码将花瓣长度分为到1-2、2-3、3-4、4-5和5-6共5个bin。

设置bin宽度

我们还可以手动设置每个bin的宽度。要设置bin宽度,请将bin宽度值传递给bins参数。

bin_width = 0.25
bins = [1, 1 + bin_width, 1 + 2*bin_width, 1 + 3*bin_width, 1 + 4*bin_width, 1 + 5*bin_width, 1 + 6*bin_width]

plt.hist(petal_length, density=True, bins=bins)
plt.show()

上面的代码将花瓣长度分为到1-1.25、1.25-1.5、1.5-1.75、1.75-2、2-2.25、2.25-2.5和2.5-2.75共7个bin。

总结

本文介绍了如何在Matplotlib直方图中设置相对频率。我们可以使用plt.hist()函数中的density参数将每个bin的值转换为相对频率。我们还可以手动设置直方图的bin数量、bin边界和bin宽度。通过自定义这些参数,我们可以更好地展示数据的分布情况。希望本文对你理解Matplotlib直方图的设置有所帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程