在 python 中绘制直方图
Plotting histogram in python
我在python中写了下面的程序来获取等宽直方图。但是当我绘制它时,我得到的是图形中的单行而不是直方图。谁能帮我弄清楚我哪里出错了。
import numpy as np
import matplotlib.pyplot as plt
for num in range(0,5):
hist, bin_edges = np.histogram([1000, 98,99992,8474,95757,958574,97363,97463,1,4,5], bins = 5)
plt.bar(bin_edges[:-1], hist, width = 1000)
plt.xlim(min(bin_edges), max(bin_edges))
plt.show()
此外,我想用它的 "num" 值来标记每个图。范围从 0 到 5。在上面给出的示例中,虽然我保持数据不变,但我打算更改我的数据对于不同的 "num" 值。
看看你的垃圾箱边缘:
>>> bin_edges
array([ 1.00000000e+00, 1.91715600e+05, 3.83430200e+05,
5.75144800e+05, 7.66859400e+05, 9.58574000e+05])
您的 bin 位置范围从 1 到大约 100 万,但您只给条形设置了 1000 的宽度。您的条形(即使存在)也太细了,看不到。此外,大多数条形图都有 sero 高度,因为大多数 bin 是空的:
>>> hist
array([10, 0, 0, 0, 1])
您看到的 "line" 是最后一个 bin,有一个元素。这个 bin 覆盖了大约 200000 的跨度,但条形宽度只有 1000,因此相对于它应该覆盖的 space 的数量来说它非常薄。高度为 10 的条也在那里,但它也很瘦,并且挤在绘图的左边缘,所以它基本上是不可见的。
尝试使用等宽条,同时将它们放置在与其大小相对应的 x 坐标处是没有意义的。通过将条形放置在那些 x 坐标处,您已经将它们间隔开与 bin 宽度成比例;使条形更细并不能使它们靠得更近,只会使它们不可见。
如果您想使用等宽条,您应该将它们放在连续的 X 位置,并在轴上使用 标签 来显示 bin 代表的值。这是一个简单的数据示例:
plt.bar(np.arange(len(bin_edges)-1), hist, width=1)
plt.xticks((np.arange(len(bin_edges))-0.5)[1:], bin_edges[:-1])
您必须决定如何设置这些标签的格式。
我在python中写了下面的程序来获取等宽直方图。但是当我绘制它时,我得到的是图形中的单行而不是直方图。谁能帮我弄清楚我哪里出错了。
import numpy as np
import matplotlib.pyplot as plt
for num in range(0,5):
hist, bin_edges = np.histogram([1000, 98,99992,8474,95757,958574,97363,97463,1,4,5], bins = 5)
plt.bar(bin_edges[:-1], hist, width = 1000)
plt.xlim(min(bin_edges), max(bin_edges))
plt.show()
此外,我想用它的 "num" 值来标记每个图。范围从 0 到 5。在上面给出的示例中,虽然我保持数据不变,但我打算更改我的数据对于不同的 "num" 值。
看看你的垃圾箱边缘:
>>> bin_edges
array([ 1.00000000e+00, 1.91715600e+05, 3.83430200e+05,
5.75144800e+05, 7.66859400e+05, 9.58574000e+05])
您的 bin 位置范围从 1 到大约 100 万,但您只给条形设置了 1000 的宽度。您的条形(即使存在)也太细了,看不到。此外,大多数条形图都有 sero 高度,因为大多数 bin 是空的:
>>> hist
array([10, 0, 0, 0, 1])
您看到的 "line" 是最后一个 bin,有一个元素。这个 bin 覆盖了大约 200000 的跨度,但条形宽度只有 1000,因此相对于它应该覆盖的 space 的数量来说它非常薄。高度为 10 的条也在那里,但它也很瘦,并且挤在绘图的左边缘,所以它基本上是不可见的。
尝试使用等宽条,同时将它们放置在与其大小相对应的 x 坐标处是没有意义的。通过将条形放置在那些 x 坐标处,您已经将它们间隔开与 bin 宽度成比例;使条形更细并不能使它们靠得更近,只会使它们不可见。
如果您想使用等宽条,您应该将它们放在连续的 X 位置,并在轴上使用 标签 来显示 bin 代表的值。这是一个简单的数据示例:
plt.bar(np.arange(len(bin_edges)-1), hist, width=1)
plt.xticks((np.arange(len(bin_edges))-0.5)[1:], bin_edges[:-1])
您必须决定如何设置这些标签的格式。