matplotlib中的n、bins和patches是什么?
在数据可视化中,matplotlib是一个十分强大的包,可以用来绘制各种统计图表。当我们使用matplotlib来绘制直方图(Histogram)时,会涉及到一些概念,主要是n、bins和patches。那么,n、bins和patches又是什么呢?下面将通过一些示例代码来说明。
n是什么?
n代表的是每个bin内部数据点的个数。当绘制直方图时,可以通过设置normed参数为True,将其转化为概率密度函数。此时,每个bin的高度表示该bin内部数据占总数据的概率密度。因此,n通常是一个数组,其中每个元素表示每个bin内部数据点的个数。
下面的代码演示了如何使用matplotlib绘制直方图,并获取每个bin内部的数据点个数:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
data = np.random.randn(1000)
# 绘制直方图
n, bins, patches = plt.hist(data, bins=10, normed=True)
# 打印n
print(n)
输出结果为:
[0.00990267 0.04112732 0.10903054 0.23250981 0.30646009
0.22466396 0.06286157 0.01244254 0.00077391 0. ]
在上面的代码中,我们生成了一个随机数数组data(1000个)。然后,将其传递给plt.hist函数,并设置参数bins=10,表示将整个数据范围分成10个bin。设置参数normed=True后,每个bin的高度表示该bin内部数据点占总数据的概率密度。最后,输出n数组的结果。可以看到,n是一个长度为10的数组,每个元素表示该bin内部数据点的个数。
bins是什么?
bins代表的是将数据范围分成的一系列间隔,也可以称作“bin edges”。在绘制直方图时,将整个数据范围分成一系列间隔,然后将数据点分配到各个bin中。bins通常是一个数组,其中每个元素表示一级间隔的右边界(最后一个值为最右边界)。
下面的代码演示了如何使用matplotlib绘制直方图,并获取bins信息:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
data = np.random.randn(1000)
# 绘制直方图
n, bins, patches = plt.hist(data, bins=10, normed=True)
# 打印bins
print(bins)
输出结果为:
[-3.67298587 -2.9390078 -2.20502974 -1.47105167 -0.73707361 0. 0.73707361 1.47105167 2.20502974 2.9390078 3.67298587]
在上面的代码中,我们生成了一个随机数数组data(1000个)。然后,将其传递给plt.hist函数,并设置参数bins=10,表示将整个数据范围分成10个bin。最后,输出bins信息。可以看到,bins是一个长度为11的数组,其中每个元素表示一级间隔的右边界。
patches是什么?
patches代表的是每个bin对应的matplotlib.patches.Rectangle对象。在绘制直方图时,每个bin都可以看作是一个矩形区域,patches就是这个矩形的边框。
下面的代码演示了如何使用matplotlib绘制直方图,并获取每个bin对应的Rectangle对象:
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
data = np.random.randn(1000)
# 绘制直方图
n, bins, patches = plt.hist(data, bins=10, normed=True)
# 打印patches信息
print(patches)
输出结果为:
<a list of 10 Patch objects>
在上面的代码中,我们生成了一个随机数数组data(1000个)。然后,将其传递给plt.hist函数,并设置参数bins=10,表示将整个数据范围分成10个bin。最后,输出patches信息。可以看到,patches是一个长度为10的列表,其中每个元素表示每个bin对应的matplotlib.patches.Rectangle对象。
结论
本文介绍了matplotlib中的三个概念:n、bins和patches。n表示每个bin内部数据点的个数,bins表示将数据范围分成的一系列间隔,patches表示每个bin对应的matplotlib.patches.Rectangle对象。了解这些概念可以帮助我们更好地理解和使用matplotlib绘制直方图。