matplotlib 直接体积绘图三维阵列

vlf7wbxs  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(125)

我想绘制一个三维数组。有没有一种方法,我可以直接饲料的数组,绘制一个体素和实际值(颜色)的坐标,产生的位置在三维数组?到目前为止,我发现的所有方法(E。例如ax体素、mlab。points3d ...)取一个数组,分别表示x、y和z坐标,但我不想显式地说明坐标,就像在plt中不必这样做一样。不显示。
编辑:我想绘制数组e。例如:[2019 - 03 - 19 00:00:00][2019 - 03 - 19 00:00][2019 - 03 - 19 00:00][2019 - 03 - 19 00:00][2019 - 03 - 19 00:00][2019 - 03 - 19 00:00][2019 - 03 - 19 00:00][2019 - 03 - 19 00:00][2019 - 03 - 19 00:00][2019 - 01][2019 - 01][2019 - 01][2019 - 01][2019 - 01][2019 - 01][2019 - 01][2019 - 01]2019 - 01][2019 - 01][201我想知道是否有一种方法可以直接获取这样的数组并绘制它。

o4hqfura

o4hqfura1#

问题似乎是如何将(n,m,l)形阵列绘制为体素,其中体素的颜色由阵列的值给出。这需要一个色彩Map表和一个归一化来将值转换为颜色(因为voxels不直接将色彩Map表作为输入)。
剩下的就是直接向前:

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()

相关问题