5

我重新措辞以确认 SO 的想法(感谢 Michael0x2a)

我一直试图找到与绘制的直方图的最大值相关的 x 值matplotlib.pyplot。起初,我什至无法仅使用代码找出如何访问直方图的数据

import matplotlib.pyplot as plt

# Dealing with sub figures...
fig = plt.figure()
ax = fig.add_subplot(111)
ax.hist(<your data>, bins=<num of bins>, normed=True, fc='k', alpha=0.3)

plt.show()

然后在网上(和这些论坛周围)做了一些阅读后,我发现你可以像这样“提取”直方图数据:

n, bins, patches = ax.hist(<your data>, bins=<num of bins>, normed=True, fc='k', alpha=0.3)

基本上我需要知道如何找到bins最大值n对应的值!

干杯!

4

3 回答 3

7

您也可以使用numpy函数来执行此操作。

elem = np.argmax(n)

这将比 python 循环(doc)快得多。

如果你确实想把它写成一个循环,我会这样写

nmax = np.max(n)
arg_max = None
for j, _n in enumerate(n):
    if _n == nmax:
        arg_max = j
        break
print b[arg_max]
于 2013-09-16T05:53:41.363 回答
7
import matplotlib.pyplot as plt
import numpy as np
import pylab as P

mu, sigma = 200, 25
x = mu + sigma*P.randn(10000)

n, b, patches = plt.hist(x, 50, normed=1, histtype='stepfilled')

bin_max = np.where(n == n.max())

print 'maxbin', b[bin_max][0]
于 2013-12-20T10:43:43.380 回答
0

这可以通过简单的“find-n-match”方法来实现

import matplotlib.pyplot as plt

# Yur sub-figure stuff
fig = plt.figure()
ax = fig.add_subplot(111)
n,b,p=ax.hist(<your data>, bins=<num of bins>)

# Finding your point
for y in range(0,len(n)):
    elem = n[y]
    if elem == n.max():
     break
else:   # ideally this should never be tripped
    y = none
print b[y] 

b'x值'列表也是如此b[y],对应的'x值'是n.max() 希望有帮助的!

于 2013-09-16T00:27:02.400 回答