如何从matplotlib的直方图函数

时间:2017-11-14 13:15:33

标签: matplotlib histogram

我有一个数据集被注入Matplotlib的plt.hist。 我保存了操作的结果如下:

data=[1,2,3,4,5,6,7,8,9]
n,bin,patches= plt.hist(data,bins=3)

但是如何访问保存为patches的列表列表? 有人可以向我解释一下silent_list的/ patches.Rectangles的概念以及如何访问存储的数据吗?我想循环patches以获取每个bin的子列表。类似于:

0: [1,4,6,8]
1: [2,3]
2: [5,7,9]

谢谢

1 个答案:

答案 0 :(得分:0)

if __name__ == '__main__': p_camera = Process(target = controlHardware,args = (SSHConnection,CameraInstance)) p_featureExtraction = Process(target = processImage, args = ()) 返回的patches是一个矩形列表。矩形有四个角,是plt.hist,具有所有相应的属性。

您可以遍历修补程序以操纵条形图的属性,例如像

matplotlib.patches.Patch

然而,补丁自然没有关于它来自何处的信息。所以为了找到直方图数据,没有用。

为了找出哪个bin包含输入数据中的哪些点,您可以遍历import matplotlib.pyplot as plt data=[1,2,2,3,4,5,7,7.5,9,8,9] n,bins,patches= plt.hist(data,bins=3) for bar in patches: print(bar.get_height()) bar.set_facecolor("pink") bar.set_edgecolor("red") plt.show() 并选择相应bin中的那些点。

bins

会打印

import matplotlib.pyplot as plt
import numpy as np

data=[1,2,2,3,4,5,7,7.5,9,8,9]
n,bins,patches= plt.hist(data,bins=3)


binlist = np.c_[bins[:-1],bins[1:]]
d = np.array(data)
for i in range(len(binlist)):
    if i == len(binlist)-1:
        l = d[(d >= binlist[i,0]) & (d <= binlist[i,1])]
    else:
        l = d[(d >= binlist[i,0]) & (d < binlist[i,1])]
    print(l)

plt.show()