fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
value = [8904,8953,8977,9147,9243,9320]
bin = np.arange(0,70,10)
ax.hist(value, bins=bin)
plt.grid(True)
plt.show()
我正在尝试在x轴上绘制带有值数组的直方图,而y轴将成为bin。但是,当我运行代码时,会得到一个空图表。谁能帮我一下。谢谢
答案 0 :(得分:0)
我首先看到的是,在您的values数组中,数据点之间没有逗号分隔。
第二件事,您的值超出了bin的范围。您所有的值都可以达到数千,而且您的回收箱范围是0到70。
这是我对代码的修改后的版本(为清楚起见,我添加了import语句)。我将值更改为在您的bin范围内:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
value = [7, 8, 15, 45, 50, 80]
bin = np.arange(0,70,10)
ax.hist(value, bins=bin)
plt.grid(True)
plt.show()
我得到的结果是this image,它说明了正在发生的事情。数据点80在bin范围之外,因此根本没有显示,就像您最初拥有的数据点一样。除此之外,所有数据点都显示在直方图中。
希望这会有所帮助!
编辑:您在对此答案的评论中说,您希望它是水平的,而不是垂直的。您将orientation="horizontal"
添加到ax.hist语句中作为参数。新代码如下:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
value = [7, 8, 15, 45, 50, 80]
bin = np.arange(0,70,10)
ax.hist(value, bins=bin, orientation="horizontal")
plt.grid(True)
plt.show()
您的情节现在应该看起来像this。