简短版本:我有一个充满不同值的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中。那会很棒。
答案 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成像来说非常强大: