使用KDE进行3D数据轮廓绘制

杜德·N

我有两个位置数据数组(X,Y)和一个权衡位置数据的相应一维整数数组(Z)。所以我的数据集看起来像这样:

X = [ 507, 1100, 1105, 1080, 378, 398, 373]
Y = [1047,  838,  821,  838, 644, 644, 659]
Z = [ 300,   55,   15,   15,  55,  15,  15] 

我想使用该数据创建一个等效于KDE的KDE,该KDE仅获取X和Y作为输入,但获取X和Y值Z倍。将该KDE应用于np.mgrid以创建轮廓图。

我已经通过在FOR循环中遍历数组并添加Z乘以X和Y来使它起作用,但是在我看来,这是一个非常微不足道的解决方案,希望您能帮助我找到一种更好的方法。

约翰·C

您可以使用weights=参数scipy.stats.gaussian_kde

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
import numpy as np
from scipy import stats

X = [ 507, 1100, 1105, 1080, 378, 398, 373]
Y = [1047,  838,  821,  838, 644, 644, 659]
Z = [ 300,   55,   15,   15,  55,  15,  15]

kernel = stats.gaussian_kde(np.array([X, Y]), weights=Z)

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
xs, ys = np.mgrid[0:1500:30j, 0:1500:30j]
zs = kernel(np.array([xs.ravel(), ys.ravel()])).reshape(xs.shape)
ax.plot_surface(xs, ys, zs, cmap="hot_r", lw=0.5, rstride=1, cstride=1, ec='k')
plt.show()

结果图

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章