【问题标题】:Manual Histogram plot in pythonpython中的手动直方图
【发布时间】:2016-07-11 13:33:05
【问题描述】:

我正在使用 matplotlib 制作直方图。

基本上,我想知道是否有任何方法可以手动设置 bin 以及它们的值,并且仍然可以获得结果,就好像该图是我的 matplotlin 直方图一样。以下是我的垃圾箱及其对应的值。

0-7     0.9375
7-13    0.9490740741
13-18   0.8285714286 
18-28   0.880952381
28-37   0.92164903
37-48   0.9345357019
48-112  0.9400368773

这是我实现的条形码

import matplotlib.pyplot as plt
plt.bar(maxlist, mean)
plt.show()

maxlist = [7.0, 13.0, 18.0, 28.0, 37.0, 48.0, 112.0]
mean = [0.9375, 0.94907407407777766, 0.82857142858571442, 0.88095238094999995, 0.92164902996666676, 0.93453570191250002, 0.94003687729000018]

这就是上面代码的条形图的样子。

我也尝试过使用宽度参数,但在这种情况下条形似乎重叠,这在直方图中不会发生。

import matplotlib.pyplot as plt
plt.bar(maxlist, mean,width = 6)
plt.show()

我想要的是条形图看起来像如下所示的直方图,没有任何重叠。任何对如何在 python /ipython notebook 中执行此操作有任何想法的人。

【问题讨论】:

  • 所以你希望条的宽度相等,但它们的底部宽度不相等?或者你有一些更宽的酒吧来填补空白吗?
  • Bins 允许您通过传递列表来提供非常具体的 bin。显示不受影响。在优秀文档中查看histtype、align 和rwidth:matplotlib.org/api/pyplot_api.html。
  • @maxymoo 我想要长度相等的条形,而不是让它们相互重叠。基数不能相等,因为 bin 的范围每次都不同。希望这能澄清你的疑问。

标签: python numpy pandas matplotlib histogram


【解决方案1】:

来自@roadrunner66 链接的文档,

matplotlib.pyplot.bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs)

用下列矩形绘制条形图:

left、left + width、bottom、bottom + height

(左、右、下和上边缘)

传递给bar 的第一个参数实际上是“bin”的左边缘。看起来maxlist,你传递的left 实际上是你的垃圾箱的右边缘,它会把所有东西都扔掉,导致你的宽度很奇怪。

import matplotlib.pyplot as plt
import numpy as np
x1 = [0, 7, 13, 18, 28, 37, 48] #left edge
x2 = x1[1::] + [112] #right edge
y = [0.9375, 0.94907407407777766, 0.82857142858571442, 0.88095238094999995, 0.92164902996666676, 0.93453570191250002, 0.94003687729000018]
w = np.array(x2) - np.array(x1) #variable width, can set this as a scalar also
plt.bar(x1, y, width=w, align='edge')
plt.show()

条形宽度代表左右边缘之间的距离,x1 和 x2。如果您想要恒定宽度,只需将width=w_scalar 传递给plt.bar(),其中w_scalar 是您的恒定bin 宽度。如果您希望条形更远,只需将width 变小即可。

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 2016-05-04
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多