4

当使用 histt​​ype='stepfilled' 和 log=True 两个选项时,我在 matplotlib 中显示直方图时遇到问题。我在 matplotlib 版本 1.1.0 中遇到了这个问题,发现这仍然存在于版本 1.2.0 中。

不幸的是,我无权发布图片,但您可以使用以下简单代码检查此行为:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

mu, sigma = 200, 25
x = mu + sigma*np.random.randn(10000)
n, bins, patches = plt.hist(x, 50, normed=1, histtype='bar',log=True)
plt.savefig("test1.png")
plt.clf()
n, bins, patches = plt.hist(x, 50, normed=1, histtype='stepfilled',log=True)
plt.savefig("test2.png")

第一个图正确显示,而在第二种情况下,使用选项 histt​​ype='stepfilled' 而不是 'bar',没有。有人有任何线索吗?

4

2 回答 2

1

如果你使用

plt.hist(x, 50, normed=1, histtype='stepfilled')
plt.semilogy()

您会得到预期的结果,但需要注意的是,对于零值的 bin,它看起来很奇怪。

于 2012-12-03T21:51:45.887 回答
1

这是 matplotlib 中的一个开放错误。也许您可以模拟stepfilled操纵第一个图形中条形的样式。

github上的问题:

于 2012-11-28T14:26:47.337 回答