gpt4 book ai didi

python - python中的手动直方图

转载 作者:太空宇宙 更新时间:2023-11-03 14:12:32 25 4
gpt4 key购买 nike

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

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

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]

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

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

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

enter image description here

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

最佳答案

来自@roadrunner66 链接的文档,

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

Make a bar plot with rectangles bounded by:

left, left + width, bottom, bottom + height

(left, right, bottom and top edges)

传递给 bar 的第一个参数实际上是“bin”的左边缘。您作为 left 传递的 maxlist 似乎实际上是您垃圾箱的右边缘,它会丢弃所有内容并导致您的宽度变得奇怪。

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()

Bar chart with variable bin widths

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

关于python - python中的手动直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36192074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com