Matplotlib: 直方图不显示。

5

我正在尝试绘制直方图,但在“图形窗口”中没有显示任何内容。 我的代码如下:

import numpy as np
import matplotlib.pyplot as plt

values = [1000000, 1525097, 2050194, 1095638, 1620736, 2145833, 1191277, 1716375, 1286916, 1382555]

plt.hist(values, 10, histtype = 'bar', facecolor = 'blue')
plt.ylabel("Values")
plt.xlabel("Bin Number")
plt.title("Histogram")
plt.axis([0,11,0,220000])
plt.show()

这是输出结果: 这里输入图片描述 我尝试实现这个图表: 这里输入图片描述 如有帮助,将不胜感激...

“plt.axis([0,11,0,220000])”这句话没有意义。您能否简单解释一下为什么要包含它以及它的作用是什么? - cel
是的,抱歉那个是错误的,是我的错...当我的图表显示负值时,我将它添加到了开头...不知道为什么。 - MAY
2个回答

7
你对直方图的理解有误。给定数据可以生成的直方图如下所示。
直方图基本上计算给定范围内有多少个给定值。
你向axis()函数提供了不正确的参数。结束值为2200000,你漏掉了一个零。此外,你交换了参数。x轴的限制先出现,然后是y轴的限制。这是修改后的代码:
import numpy as np
import matplotlib.pyplot as plt

values = [1000000, 1525097, 2050194, 1095638, 1620736, 2145833, 1191277, 1716375, 1286916, 1382555]

plt.hist(values, 10, histtype = 'bar', facecolor = 'blue')
plt.ylabel("Values")
plt.xlabel("Bin Number")
plt.title("Histogram")
plt.axis([0,2200000,0,11])
plt.show()

这是生成的直方图:

enter image description here


是的,那是我的错误,但即使将220000更改为2200000也没有解决任何问题,我正在尝试将0-10放在x轴上,将0-2200000放在y轴上。无论如何,谢谢。 - MAY
@SohailAshraf,您误解了直方图的含义。请查看更新后的答案。 - Aswin P J
不,我没有误解。请检查上面问题中我想要生成的输出...谢谢。 - MAY
@SohailAshraf 从给定的直方图中无法生成这样的输出。至少直方图不是这样做的。您需要生成1000000个值为'1'的数据,然后绘制直方图。 - Aswin P J
抱歉,我明白了...我一直在错误的方向上做,这是不可能的...我需要使用条形图。无论如何,感谢您的帮助... - MAY
@SohailAshraf 没问题 :D。如果这有帮助到你,请将答案标记为已接受。谢谢。 - Aswin P J

5
我终于做到了...
这是代码:
import numpy as np
import matplotlib.pyplot as plt

values = [1000000, 1525097, 2050194, 1095638, 1620736, 2145833, 1191277, 1716375, 1286916, 1382555]
strategy = [1,2,3,4,5,6,7,8,9,10]
value = np.array(values)
strategies = np.array(strategy)
plt.bar(strategy, values, .8)
plt.ylabel("Values")
plt.xlabel("Bin Number")
plt.title("Histogram")
plt.axis([1,11,0,2200000])
plt.show()

输出: 在这里输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接