python - 将四维 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 和强度的四个列表。我该怎么做呢?
解决方案
我的解决方案:
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');
推荐阅读
- c# - 如何验证与 SSO 集成的 Rest API
- java - 如何在 android 编程中将操作项用作按钮?
- typescript - 开玩笑的期望不会从异步等待函数中捕获抛出
- angular - Angular 7 + SSO - 重定向到授权服务器的位置
- android - android-如何从 MutableList 获取属性列表
- python - 将 skipna 的 pandas 全局默认设置为 False
- vue.js - Windows 上的 Electron Builder Vue cli 3 应用程序抛出错误 registerStandardSchemes undefined
- angular - 调用canadapost autocomplete api以angular填充文本框
- phonegap-plugins - 未捕获的 ReferenceError:模块未在 push.js 中定义
- javascript - 如何在中间加快设置间隔过程并在结束时变慢