【问题标题】:Plot of 3D matrix with colour scale - Python具有色标的 3D 矩阵图 - Python
【发布时间】:2015-07-24 14:03:08
【问题描述】:

我想绘制一个 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 个轴的尺寸。我现在如何才能真正看到和/或保存图像?

【问题讨论】:

    标签: python multidimensional-array matplotlib


    【解决方案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 个切片)。

    【讨论】:

    • 感谢您的回答,我对 mayavi 有疑问(请参阅编辑)。你能帮助我吗? contourf 方法也可以,但我想专注于全 3D 绘图
    • @johnhenry 我看了看,但似乎和你有同样的问题。如果我运行 mayavi 测试,我会得到一张图像,所以我猜这是您尝试查看数据的方式,但恐怕我无法提供更多帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2014-06-20
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多