Python 直接体积图 3D 阵列
Python direct volumetric plot 3D array
我想绘制一个 3 维数组。有没有一种方法可以直接提供数组,在 3d 数组中的位置产生的坐标处绘制体素和实际值(颜色)?
到目前为止我发现的所有方法(例如 ax.voxels、mlab.points3d...)都采用 x、y 和 z 坐标的数组,但我不想明确说明坐标,就像一个没有'不必在 plt.imshow.
中做
编辑:
我想绘制一个数组,例如像这样:
a = [ [ [10,20], [5,300] ] , [ [7,80],[9,12] ] ]
这应该给出一个立方体,该立方体在数组索引给出的坐标处具有数组内的值。我想知道是否有一种方法可以直接获取这样的数组并绘制出来。
问题似乎是如何将 (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()
我想绘制一个 3 维数组。有没有一种方法可以直接提供数组,在 3d 数组中的位置产生的坐标处绘制体素和实际值(颜色)? 到目前为止我发现的所有方法(例如 ax.voxels、mlab.points3d...)都采用 x、y 和 z 坐标的数组,但我不想明确说明坐标,就像一个没有'不必在 plt.imshow.
中做编辑: 我想绘制一个数组,例如像这样: a = [ [ [10,20], [5,300] ] , [ [7,80],[9,12] ] ] 这应该给出一个立方体,该立方体在数组索引给出的坐标处具有数组内的值。我想知道是否有一种方法可以直接获取这样的数组并绘制出来。
问题似乎是如何将 (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()