我正在绘制直方图,我在堆栈交换中发现了这个很好: histogram for discrete values
以下是贴在那里的代码:
import matplotlib.pyplot as plt
import numpy as np
data = range(11)
data = np.array(data)
d = np.diff(np.unique(data)).min()
left_of_first_bin = data.min() - float(d)/2
right_of_last_bin = data.max() + float(d)/2
plt.hist(data, np.arange(left_of_first_bin, right_of_last_bin + d, d))
plt.show()
我在d = 2.84e-5的情况下使用它,上面np.arrange()的输出长度为68704。如果我从一个anaconda环境在ubuntu 14.04上从python解释器(python 3.5)运行它,系统会挂起,如果不使用ctrl-c杀死解释器,我就无法恢复。我想知道plt.hist()中的bin的大小是否有限制,或者这种方法是否存在固有的错误。如果有限制,我会期待错误而不是挂起。如果d不是太小,代码工作正常。我的数据长度也可能影响到这一点,它是22289.我想它可能只是在搅拌而且我没有等待足够长的时间?
我搜索了matplotlib.pyplot.hist限制和其他变体,但找不到任何内容。我所说的文件没有提到限制。谢谢。
答案 0 :(得分:3)
看起来没有真正的悬念。它只需要永远,因为数据是如此之大,bin宽度如此之小。我注意到,在d = .001的情况下,我的机器上花了大约30秒来渲染绘图。对不起,我以为我发现了一个潜在的错误,因为新手很兴奋。