在matplotlib直方图函数中获取bin的信息

yduiuuwa  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(219)

我使用matplotlib在python中绘制直方图:

plt.hist(nparray, bins=10, label='hist')

是否可以打印一个包含所有bin信息的 Dataframe ,比如每个bin中的元素数量?

9w11ddsr

9w11ddsr1#

plt.hist的返回值为:
返回:元组:(n,bin,patches)或([n0,n1,...],bin,[patches0,patches1,...])
因此,您需要做的就是适当地捕获返回值。例如:

import numpy as np
import matplotlib.pyplot as plt

# generate some uniformly distributed data
x = np.random.rand(1000)

# create the histogram
(n, bins, patches) = plt.hist(x, bins=10, label='hst')

plt.show()

# inspect the counts in each bin
In [4]: print n
[102  87 102  83 106 100 104 110 102 104]

# and we see that the bins are approximately uniformly filled.
# create a second histogram with more bins (but same input data)
(n2, bins2, patches) = plt.hist(x, bins=20, label='hst')

In [34]: print n2
[54 48 39 48 51 51 37 46 49 57 50 50 52 52 59 51 58 44 58 46]

# bins are uniformly filled but obviously with fewer in each bin.

返回的bins定义了所使用的每个bin的边缘。

hgc7kmma

hgc7kmma2#

使用np.histogram将值分箱到plt.hist中的离散区间,因此如果出于某种原因,您需要不绘制数据的箱和计数,则可以使用np.histogram。如果您想要数据和图,如@Bonlenfum所示,hist()调用已经返回了这样的数据。
从下面可以看到,pyplot和numpy直方图的计数和bin完全匹配。

x = np.random.rand(1000)
n_bins = 100

# plot histogram
n_plt, bins_plt, patches = plt.hist(x, n_bins)
# compute histogram
n_np, bins_np = np.histogram(x, n_bins)

(n_plt == n_np).all() and (bins_plt == bins_np).all()  # True

相关问题