4

我已经能够为自己制作一个看起来像这样的小直方图:

总有一天会很漂亮

我能够使用以下代码生成图像:

    import numpy as np
    import matplotlib.pyplot as plt

    plt.figure()  
    plt.axis([0, 6000, 0, 45000])  

    data['column'][data.value == 0].hist(bins=200, label='A') 
    data['column2'][data.value == 1].hist(bins=200, label='B')

    plt.title('A Histogram')  
    plt.xlabel('x-axis')  
    plt.ylabel('y-axis')  
    plt.legend()  

    return plt

这一切都很好,但箱子的长度不相等。我能够以相同长度获得垃圾箱的唯一方法是执行以下操作:

 bins=[0,100,200,300,400,.......)

这一点都不漂亮。

我用谷歌搜索了一下,并在这里环顾四周。类似问题最受欢迎的答案是this guy,它提出了一个看似出色的答案,但我无法终生工作。

谢谢你的帮助!

4

1 回答 1

7

我对您的数据结构以及您如何调用该函数有点困惑hist。但是,我想您使用的是 matplotib,因此您需要为该hist函数定义相同的分箱范围。如果你传递一个带有 bin 边界的数组,而不是你想要的 bin 数量,效果会更好。

import numpy as np
import matplotlib.pyplot as plt

plt.figure()  
plt.axis([0, 6000, 0, 45000])  

# From your example I am assuming that the maximum value is 6000
binBoundaries = np.linspace(0,6000,201)

data['column'][data.value == 0].hist(bins=binBoundaries, label='A') 
data['column2'][data.value == 1].hist(bins=binBoundaries, label='B')

plt.title('A Histogram')  
plt.xlabel('x-axis')  
plt.ylabel('y-axis')  
plt.legend()

这应该适合你。

让我知道它是否有帮助。

于 2015-01-23T01:53:57.613 回答