如何在python / plotly中制作2D向量分布的3D直方图

问题描述 投票:1回答:1

所以,基本上,我在python中有一个2D向量列表,我想对该向量的分布进行3D可视化,例如通过曲面绘制整个曲面。我将保留向量前4个分量的样本

[[0.35431211986827776, 0.21438054570807566], [0.35431211986827776, 0.21438054570807566], [0.35431211986827776, 0.21438054570807566], [0.35431211986827776, 0.21438054570807566],

所以我用seaborn.kdeplot()进行了可视化,只给出了KDE的2D可视化:

KDE estimator for bivariate sample

但是我想要一个3D结果,就像在此二元正态分布图中一样,其中de X和Y轴是2d矩阵,而z轴是pdf:

enter image description here

我想我只需要为列表中的每个向量找到一个良好的pdf估计。有没有一种方法可以将KDE拟合到我的数据,以便获得每个矢量的近似分布并绘制表面?

非常感谢

python 3d statistics plotly visualization
1个回答
1
投票

这是一种方法:

x = np.random.normal(5, 10, 100000)
y = np.random.normal(10, 3, 100000)
h = np.histogram2d(x, y, bins=50)

def bin_centers(bins):
    centers = (bins + (bins[1]-bins[0])/2) [:-1]    
    return centers

x_bins_centers = bin_centers(h[1])
y_bins_centers = bin_centers(h[2])

df = pd.DataFrame(h[0], index=x_bins_centers, columns=y_bins_centers)
fig = go.Figure(data=[go.Surface(z=df)])
fig.show()

结果是:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.