1

我正在制作这样的密度图如何在 matplotlib 中创建密度图?我打算在情节上制作几个点,我的问题是我需要知道最高峰的确切 x 值是多少。

我可以通过循环找到它:

    density = gaussian_kde(data)
    aa = 0
    bb = 0
    for i in range(max value of data):
       if density(i)[0]>aa:
            aa = density(i)[0]
            bb = i

在此 bb 具有峰值的 x 值之后,但执行此循环的时间太长。目前大约需要 25 秒,未来数据量会更大

我希望这不是重复的,但至少我找不到这个问题的答案。

4

1 回答 1

6

你可以使用numpy.argmax

ys = density(np.arange(9))
bb = np.argmax(ys)
aa = ys[bb]

这将计算与您发布的代码相同的aabb。但是,这只能找到 的整数值中的最大值x。如果您查看Justin Peel 的图表,您会发现峰值密度可能出现在某个非整数处x-value。因此,要找到更接近峰值密度的近似值,请使用

xs = np.linspace(0,8,200)
ys = density(xs)
index = np.argmax(ys)
max_y = ys[index]
max_x = xs[index]
于 2013-07-29T12:26:08.680 回答