当前位置: 首页 > 面试题库 >

如何绘制直方图,以使matplotlib中的条形高度之和为1?

申屠亦
2023-03-14
问题内容

我想使用matplotlib从向量绘制归一化的直方图。我尝试了以下方法:

plt.hist(myarray, normed=True)

以及:

plt.hist(myarray, normed=1)

但是没有一个选项会从[0,1]产生y轴,以使得直方图的条形高度之和为1。我想生成这样的直方图-我该怎么做?


问题答案:

如果您提出了更完整的工作示例(或在这种情况下为非工作示例),则将更有帮助。

我尝试了以下方法:

import numpy as np
import matplotlib.pyplot as plt

x = np.random.randn(1000)

fig = plt.figure()
ax = fig.add_subplot(111)
n, bins, rectangles = ax.hist(x, 50, density=True)
fig.canvas.draw()
plt.show()

实际上,这将产生一个y轴从到的条形图直方图[0,1]

此外,按照该hist文件(即ax.hist?ipython),我觉得总和也没关系:

*normed*:
If *True*, the first element of the return tuple will
be the counts normalized to form a probability density, i.e.,
``n/(len(x)*dbin)``.  In a probability density, the integral of
the histogram should be 1; you can verify that with a
trapezoidal integration of the probability density function::

    pdf, bins, patches = ax.hist(...)
    print np.sum(pdf * np.diff(bins))

在上面的命令后尝试一下:

np.sum(n * np.diff(bins))

我得到1.0预期的返回值。请记住,normed=True这并不意味着每个小节的值之和将是统一的,而不是在小节上的积分是统一的。在我的情况下,np.sum(n)返回约7.2767



 类似资料:
  • numpy.histogram()函数将输入数组和作为两个参数。 bin数组中的连续元素用作每个bin的边界。 Matplotlib 可以将直方图的数字表示转换为图形。 pyplot子模块的plt()函数将包含数据和数组的数组作为参数,并转换为直方图。

  • 我正在尝试在 matplotlib 中绘制具有多个数据序列的直方图。 我有不相等间隔的箱子,但是我想要每个箱子得到相同的宽度。所以我这样使用属性< code>width: 结果是: 我怎样才能去掉两个系列的两个对应箱子之间的边距?一、 e.如何为每个箱子分组不同系列的钢筋? 谢谢

  • 我有一个小函数,可以生成两个子情节的情节。一个子图是重叠的两个直方图,另一个子图是一个直方图除以另一个直方图的结果。 对于第二个子图,我不知道如何删除直方图条之间的边(比如上面的那个),也不知道如何降低它的高度(比如说,它是上面那个高度的一半)。我也不知道如何将标题设置到情节的最顶端。 这些事情怎么可能做到? 我的代码如下:

  • 我有一个pandas数据框,它在一系列中具有以下值 我被指示用Python 3.6在Jupyter笔记本中绘制两个直方图。不用担心,对吧? 我选择了8个垃圾箱,因为这对我来说是最好的。我还被指示用x的对数绘制另一个直方图。 这个直方图看起来很糟糕。我做得不对吗?我试过摆弄这个情节,但我所做的一切似乎都让柱状图看起来更糟。例子: 除了将X的日志绘制为直方图之外,我没有得到任何指示。 我真的很感激任何

  • 问题内容: 有没有办法直接使用字典中的数据来绘制条形图? 我的字典看起来像这样: 我期待 工作,但事实并非如此。 这是错误: 问题答案: 您可以通过首先绘制条形图然后设置适当的刻度来分两行进行: 请注意,倒数第二行应在python3中读取,因为它会返回一个生成器,而matplotlib无法直接使用该生成器。

  • 我有一张桌子,比如: 生成虚拟数据: 我想用垫线 (v1.4) 在 Python 3 中完成一个任务: 绘制的直方图 按 两个小时,未能获得所需的直方图 我阅读了matplotlib的示例和用户指南。令人惊讶的是,我没有找到关于如何从颜色图中指定颜色的教程 我在谷歌上搜索过,但没有找到一个简洁的例子 我想一个人可以用,不导入一系列模块,例如,