假设我们有一个形状为 (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()
关于python - 如何将 3 维张量绘制为具有不同颜色的管,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68510066/