用python语言绘制出三维核密度估计图
时间: 2023-07-12 12:36:21 浏览: 265
绘制三维三组分的等密度图
要在Python中绘制三维核密度估计图,可以使用SciPy库中的`gaussian_kde`函数和Matplotlib库中的`Axes3D`模块。
下面是一个示例代码,用于生成随机三维数据并绘制其核密度估计图:
```python
import numpy as np
from scipy.stats import gaussian_kde
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 生成随机三维数据
x = np.random.normal(size=1000)
y = np.random.normal(size=1000)
z = np.random.normal(size=1000)
# 计算核密度估计
density = gaussian_kde([x, y, z])
# 创建图表对象
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 生成网格点
xmin, ymin, zmin = x.min(), y.min(), z.min()
xmax, ymax, zmax = x.max(), y.max(), z.max()
xi, yi, zi = np.mgrid[xmin:xmax:100j, ymin:ymax:100j, zmin:zmax:100j]
positions = np.vstack([xi.ravel(), yi.ravel(), zi.ravel()])
# 计算密度值
values = np.reshape(density(positions).T, xi.shape)
# 绘制三维核密度估计图
ax.scatter(x, y, z, alpha=0.1, s=5)
ax.contour3D(xi, yi, zi, values, 100, cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
```
运行以上代码,就可以得到一个随机三维数据的核密度估计图。
阅读全文