Matplotlib在x和y轴上显示具有特定值的直方图

时间:2018-11-05 17:32:47

标签: python numpy matplotlib

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。但是,当我运行代码时,会得到一个空图表。谁能帮我一下。谢谢

1 个答案:

答案 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"添加到a​​x.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