python - 如何将 3 维张量绘制为具有不同颜色的管

标签 python python-3.x numpy matplotlib

假设我们有一个形状为 (64,64,64) 的 numpy 数组 traj,并且该张量的每个元素可以是 -1 或 +1。我想将它绘制成一个三维立方体,其中蓝色代表-1,红色代表+1。我怎样才能做到这一点?

p.s. 为了有物理直觉,这个traj矩阵是一个三维伊辛模型配置,这个张量的每个元素都是磁体的自旋.

最佳答案

您可以通过创建启用三维轴的图形 (projection='3d') 并使用 ax.voxels 来实现此目的参数 facecolors 为绘制在轴上的 1x1x1 立方体选择所需的颜色。

import matplotlib.pyplot as plt
import numpy as np

axes = [16, 16, 16] # change to 64
traj = np.random.choice([-1,1], axes)

alpha = 0.9
colors = np.empty(axes + [4], dtype=np.float32)
colors[traj==1] = [1, 0, 0, alpha]  # red
colors[traj==-1] = [0, 0, 1, alpha]  # blue

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.voxels(traj, facecolors=colors, edgecolors='black')
plt.show()

cube1

关于python - 如何将 3 维张量绘制为具有不同颜色的管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68510066/

相关文章:

python - 本地运行 python 脚本与在 docker 中运行之间的区别

python-3.x - Opencv - 椭圆轮廓不正确拟合

python - numpy - 选择两个数组中一列相等的行

python - 沿轴连接 numpy 字符串数组?

Python 弹出 python.exe

python - 如何使用 python 请求将 tar.gz 和 jar 文件作为 GitHub Assets 上传?

python - 如何解决python 'utf-8'错误?

python-3.x - 使用Geopandas,如何通过采样方法在每个多边形中随机选择5个点

python - 在 Python 3 中向数组添加坐标

python - 在具有一行零的矩阵中,如何将矩阵的相应对角线条目替换为一?