2012-11-23 128 views
1

简短版本:我有一个NxNxN矩阵,其中有不同的值。我想创建它的2D投影正是这样看:(!太3D如果可能的话)http://tinyurl.com/bellfkn在Python中创建3D矩阵的2D投影

长版:我已经作出维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)。有没有办法将其转化为二维投影 - 密度的侧视图显示密集的区域和密度较小的区域?

在Matlab中我只想做:

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

,它给了我一个密度投影 - 我想要做相同的,但在Python。有没有办法在3D投影中查看整个NxNxN矩阵?就像链接,但在3D中。那太好了。

+0

是massmat一个numpy的阵列? – DaveP

+0

是massmat = np.zeros((ndim,ndim,ndim))。我添加了一个编辑。 – Griff

回答

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而不是从1像MATLAB一样)。

对于从一般方向的投影......好吧,这是相当困难的。顺便说一下,如果您需要查看一些3D数据,我强烈建议您减少一些时间来探索mayavi。它仍然是一个Python库,它是真正强大的3D成像:

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

+0

非常感谢。我也会检查mayavi。虽然,我提供的链接的colormap是什么?在哪里可以看到不同的颜色映射?我想Google是我的朋友。 – Griff

+0

是的,谷歌是一个很好的朋友,但我不是一个虐心者:)这是我喜欢探索各种颜色地图的人 http://dept.astro.lsa.umich.edu/~msshin/science/code/matplotlib_cm/ 当然,你甚至可以创建自己的,但我想这不是问题的主题 – EnricoGiampieri

+0

官方列表是这一个,你可以运行代码,看看你自己的系统中的哪一个 http:///www.scipy.org/Cookbook/Matplotlib/Show_colormaps – EnricoGiampieri