【发布时间】:2014-10-19 02:53:35
【问题描述】:
我正在尝试可视化 3D 数据。这是一个完整的 3D 矩阵:每个 (x,y,z) 坐标都有一个值,这与表面或单个数据向量的集合不同。我尝试这样做的方法是绘制一个不透明的立方体,其中立方体的每个边缘显示正交维度上的数据总和。
一些示例数据——基本上,一个以 (3,5,7) 为中心的 blob:
import numpy as np
(x,y,z) = np.mgrid[0:10,0:10, 0:10]
data = np.exp(-((x-3)**2 + (y-5)**2 + (z-7)**2)**(0.5))
edge_yz = np.sum(data,axis=0)
edge_xz = np.sum(data,axis=1)
edge_xy = np.sum(data,axis=2)
所以这里的想法是生成一个显示立方体的 3D 图;立方体的每个表面都会显示适当的 2D 矩阵 edge_*。这就像在适当的 3D 位置绘制 3 个 4 边多边形(或者如果你也在立方体的背面绘制 6 个),除了每个多边形实际上是一个要以颜色绘制的值矩阵。
目前我最好的近似方法是计算包含偏斜版本边缘的更大矩阵,并将它们连接成一个更大的 2D 矩阵,然后 imshow() 那个更大的矩阵。看起来很笨拙,并且做了很多工作,matplotlib 或 m3plot 中的某些引擎或我确定已经做过的事情。它也仅适用于以单一视角查看静态图像,但这不是我目前需要克服的问题。
有没有一种使用现有 python 工具在真正的 3D 图中绘制这些立方体边缘的好方法?有没有更好的方法来绘制 3D 矩阵?
【问题讨论】:
-
你看过contour plots吗?您也许可以组合 4 或 6 个
contourf命令来生成一个多维数据集。
标签: python matplotlib 3d