带有色标的3D矩阵图 - Python

时间:2015-07-24 14:03:09

标签: python multidimensional-array matplotlib

我想绘制一个3D矩阵 - 基本上是一个数字框,每个数字都用x, y, z三位坐标标记 - 通过为每个x, y, z点指定不同的颜色,根据它幅度(例如,红色的数字越大,蓝色的数字越小)。 我无法绘制矩阵的各个部分,我宁愿将整个矩阵绘制在一起。

如果我们调用matrix3D我的矩阵,其元素就是这样构建的:

matrix3D[x][y][z] = np.exp(-(x**2+y**2+z**2))

如何获得所需的情节?

编辑:使用Mayavi2 Contour3D(),我尝试编写以下内容:

from mayavi import mlab

X = np.arange(0, n_x, 1)
Y = np.arange(0, n_z, 1)
Z = np.arange(0, n_z, 1)
X, Y, Z = np.meshgrid(X, Y, Z)
obj = mlab.contour3d(X, Y, Z, matrix3D, contours=4, transparent=True)

其中n_x, n_y, n_z是3轴的尺寸。我现在如何实际查看和/或保存图像?

1 个答案:

答案 0 :(得分:1)

如果你需要绘制整个事物,我认为你最好看看mayavi。这将让您绘制一个音量,您应该能够获得所需的结果。

我知道你说你需要立刻绘制整个事物,但这可能仍然是某些使用。您可以使用countourf进行如下绘图:

import numpy as np
import matplotlib.pyplot as plt

matrix3D = np.empty((10, 10, 10))
x = np.arange(10)
y = np.arange(10)
z = np.arange(10)
matrix3D[x][y][z] = np.exp(-(x**2+y**2+z**2))

fig = plt.figure()
ax = fig.add_subplot(plt.subplot(1, 1, 1))
ax.contourf(x, y, matrix3D[:, :, 3])

plt.show()

这为您提供了3D矩阵的切片(在本例中为第4个切片)。

enter image description here