Python直接体积图3D阵列

ari*_*ari 2 python plot matplotlib multidimensional-array mayavi

我正在寻找绘制一个 3 维数组。有没有一种方法可以直接输入数组,绘制体素和实际值(颜色)在由 3d 数组中的位置产生的坐标处?到目前为止,我发现的所有方法(例如 ax.voxels、mlab.points3d...)都采用 x、y 和 z 坐标的数组,但我不想明确说明坐标,就像没有在 plt.imshow 中做。

编辑:我想绘制一个数组,例如: a = [ [ [ [10,20], [5,300] ] , [ [7,80],[9,12] ] ] 这应该给出一个立方体数组中数组索引给出的坐标处的值。我想知道是否有一种方法可以直接获取这样的数组并绘制它。

Imp*_*est 6

问题似乎是如何将 (n,m,l) 形数组绘制为体素,其中体素的颜色由数组的值给出。这需要颜色图和归一化来将值转换为颜色(因为voxels不要直接将颜色图作为输入)。

剩下的很简单:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

a = np.array( [ [ [10,20], [5,300] ] , [ [7,80],[9,12] ] ] )

fig = plt.figure()
ax = fig.gca(projection='3d')

cmap = plt.get_cmap("viridis")
norm= plt.Normalize(a.min(), a.max())
ax.voxels(np.ones_like(a), facecolors=cmap(norm(a)), edgecolor="black")

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明