首页 > 解决方案 > 将四维 numpy 数组转换为 x、y、z、强度列表

问题描述

我有一个如下创建的 numpy 数组

results = np.zeros((X, Y, Z))

然后我在 3D 空间中设置点的值如下(代表该点的密度/强度)

results[x,y,z] = 5.0

我现在想使用 x、y、z 坐标和强度值(如散点图的不透明度或大小)来可视化这些数据。但是,对于 3D 散点图,我无法弄清楚如何将其转换为 x、y、z 和强度的四个列表。我该怎么做呢?

标签: pythonnumpy

解决方案


我的解决方案:

fig = plt.figure(figsize=(15, 15))
ax = fig.add_subplot(projection="3d")
plt.title("Spherical Potential Heatmap ($J = 32, simuls = 6.4M, E = 1, cutoff = 100$)", fontsize=18)
ax.xaxis.pane.fill = False
ax.yaxis.pane.fill = False
ax.zaxis.pane.fill = False
mask = base_array_e0 > 100
idx = np.arange(int(np.prod(base_array_e0.shape)))
x, y, z = np.unravel_index(idx, base_array_e0.shape)
plot = ax.scatter(x, y, z, c=base_array_e0.flatten(), s=10.0 * mask, edgecolor="face", alpha=0.15, marker="o", cmap="magma", linewidth=0)
color_bar = plt.colorbar(plot, ax = ax,fraction=0.036, pad=0.04)
color_bar.set_alpha(1)
color_bar.draw_all()
color_bar.set_label('Steps')
plt.savefig('random_walk_3d_energy_sphere_0.png', bbox_inches='tight');

在此处输入图像描述


推荐阅读