【问题标题】:Matplotlib histogram from numpy histogram output来自numpy直方图输出的Matplotlib直方图[重复]
【发布时间】:2017-10-15 15:48:43
【问题描述】:

我已经在较大数据集的一组子集上运行了numpy.histogram()。我想将计算与图形输出分开,所以我不想在数据本身上调用matplotlib.pyplot.hist()

原则上,这两个函数都采用相同的输入:原始数据本身,在分箱之前。 numpy 版本只返回 nbin+1 bin 边缘和 nbin 频率,而 matplotlib 版本继续制作情节本身。

那么有没有一种简单的方法可以从numpy.histogram() 输出本身生成直方图,而无需重新计算(并且必须保存输入)?

需要明确的是,numpy.histogram() 输出是nbin+1 bin 边缘的列表nbin bin;没有将这些作为输入的matplotlib 例程。

【问题讨论】:

标签: python numpy matplotlib histogram


【解决方案1】:

您可以使用plt.bar 绘制numpy.histogram 的输出。

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)

a = np.random.rayleigh(scale=3,size=100)
bins = np.arange(10)

frq, edges = np.histogram(a, bins)

fig, ax = plt.subplots()
ax.bar(edges[:-1], frq, width=np.diff(edges), edgecolor="black", align="edge")

plt.show()

【讨论】:

  • 你知道,也许你只是在一个糟糕的时间抓住了我,我正在努力解决问题,但 plt.hist 无法接收 np.histogram 的输出似乎很奇怪。如果你想重新调整 y 轴怎么办? np.histogram 的输出很容易,然后你可以很容易地绘制它。如果你想要 histt​​ype=u'step' 怎么办?现在我必须在酒吧里弄清楚这一点。如果这两件事应该一起工作,所有这些变通办法都将得到解决......无论如何,+1 lol
  • @kηives plt.histnp.histogram 的包装器。由于np.histogram 不会将先前调用的输出带到np.histogram,因此plt.hist 也是如此。因此问题是:您想绘制通过np.histogram 获得的东西吗?如果是,请使用plt.hist,如果不是(例如,因为您需要操作数据),请不要使用plt.hist。这是有道理的,因为如果你操作数据,它就不再是直方图了,所以hist 函数不再负责。要绘制阶跃函数,请使用plt.step(...)
  • 如何将这样的图形写入磁盘?
猜你喜欢
  • 1970-01-01
  • 2012-01-23
  • 2011-07-16
  • 2017-12-12
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
相关资源
最近更新 更多