我重新措辞,以确认S.O.的想法。 (感谢Michael0x2a)
我一直试图找到与matplotlib.pyplot
中绘制的直方图的最大值相关联的x值。起初,我甚至无法使用代码
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()
然后在网上(以及在这些论坛周围)进行一些阅读后,我发现你可以提取&#39;直方图数据如下:
n, bins, patches = ax.hist(<your data>, bins=<num of bins>, normed=True, fc='k', alpha=0.3)
基本上我需要知道如何找到最大bins
对应的n
的值!
干杯!
答案 0 :(得分:5)
您也可以使用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]
答案 1 :(得分:5)
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]
答案 2 :(得分:0)
这可以通过简单的“找到 - 匹配”来实现。一种方法
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
是&#39; x值&#39;列表,b[y]
是&#39; x值&#39;对应n.max()
希望有所帮助!