在python中创建3D矩阵的2D投影

时间:2012-11-23 01:06:18

标签: python numpy visualization projection

简短版本:我有一个充满不同值的NxNxN矩阵。我想要创建一个看起来完全像这样的2D投影:http://tinyurl.com/bellfkn(如果可能的话也是3D!)

长版本:我使用以下循环制作了尺寸为NxNxN的密度矩阵:

ndim = 512
massmat = np.zeros((ndim,ndim,ndim)) 
for i in range(0,npoints):
        massmat[int(x1[i]),int(y1[i]),int(z1[i])] = massmat[int(x1[i]),int(y1[i]),int(z1[i])] + mpart

densemat = massmat/volumeofcell

massmat是一个numpy数组。

所以基本上我现在有一个NxNxN矩阵,其中某些单元格在这种情况下包含密度(单位为g / cm ^ 3)。有没有办法将其变成2D投影 - 密度的侧面视图,颜色条表示密集区域和密度较小的区域?

在Matlab中我会这样做:

imageArray2Dmesh = mean(densemat, 3);
figure
sc(imageArray2Dmesh, 'pink')

它给了我一个密度投影 - 我想在Python中做同样的事情。有没有办法在3D投影中查看整个NxNxN矩阵?就像链接但是在3D中。那会很棒。

1 个答案:

答案 0 :(得分:1)

您可以在numpy和matplotlib中使用非常相似的代码:

import numpy as np
import pylab as plt

imageArray2Dmesh = np.mean(mesh_reshape, axis=2);
plt.figure()
plt.pcolor(imageArray2Dmesh, cmap = ,cmap=plt.cm.pink)
plt.colorbar()
plt.show()

你有更多的命令,但这只是因为matlab和matplotlib中的grafics的不同方法(提示:从长远来看,matplotlib的方式更好)

如果你想让项目从另一个方向改变轴参数(请记住,python的索引是0而不是像matlab一样)。

对于来自通用方向的投影......嗯,这是非常困难的。

顺便说一下,如果你需要查看一些3D数据,我强烈建议你花一些时间来探索mayavi。它仍然是一个python库,它对于3D成像来说非常强大:

http://docs.enthought.com/mayavi/mayavi/auto/examples.html