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直方图的设置有所帮助。