2012-11-23 3 views
1

짧은 버전 : 다른 값으로 가득 찬 NxNxN 행렬이 있습니다. 나는이처럼 정확하게 찾고 그것의 2D 투사 만들 : (! 너무 가능한 경우 3D) http://tinyurl.com/bellfkn파이썬에서 3D 매트릭스의 2D 투영을 만듭니다.

긴 버전 :

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 

: 나는 다음과 같은 루프 치수 NxNxN의 밀도 행렬을 만들었다 massmat는 numpy 배열입니다.

기본적으로 이제는 특정 셀에 밀도 (단위는 g/cm^3)가 포함 된 NxNxN 행렬이 있습니다. 밀도가 높은 영역과 밀도가 낮은 영역을 나타내는 색상 막대를 사용하여 밀도를 측면에서 볼 수있는 2D 투영으로 전환 할 수있는 방법이 있습니까?

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

을 그리고 그것은 나에게 밀도 투영을 제공합니다 - 나는 동일하지만, 파이썬을하고 싶습니다 :

matlab에 나는 다만 것이다. 3D 프로젝션에서 전체 NxNxN 매트릭스를 보는 방법이 있습니까? 링크와 같지만 3D입니다. 그게 좋을거야.

+0

는 NumPy와 배열을 massmat인가? – DaveP

+0

예 massmat = np.zeros ((ndim, ndim, ndim)). 나는 편집을 추가했다. – Griff

답변

1

당신은 NumPy와 및하기 matplotlib에서 매우 비슷한 코드를 사용할 수 있습니다 : 당신이 더 많은 명령의 몇 가지가 있지만,이 때문에 MATLAB과하기 matplotlib (힌트에 grafics에 대한 다른 접근 방법에 그냥

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() 

:에 장기 실행, matplotlib 방법은 방법이 더 좋습니다)

다른 방향에서 프로젝트를 원한다면 (파이썬은 0부터 시작하여 matlab처럼 1이 아닌 인덱스를가집니다) 축 파라미터를 변경하십시오.

일반적인 방향에서 영사 ... 잘, 그것은 꽤 어렵습니다.

그런데, 3D 데이터를 볼 필요가 있다면, 나는 mayavi를 탐험하기 위해 약간의 시간을 잃을 것을 강력히 제안합니다. 아직 파이썬 라이브러리이고, 그것은 3 차원 영상 정말 강력 :

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

+0

대단히 감사합니다. 나는 mayavi도 조사 할 것이다. 그래도 내가 제공 한 링크의 색상 맵은 무엇입니까? 어디에서 다른 색상 표를 볼 수 있습니까? Google이 내 친구라고 생각합니다. – Griff

+0

예, Google은 좋은 친구지만 저는 사디스트가 아닙니다 :) 이것은 다양한 컬러 맵을 탐색하기 위해 선호하는 것입니다. http://dept.astro.lsa.umich.edu/~msshin/science/code/matplotlib_cm/ 물론 자신 만의 코드를 만들 수도 있지만 질문의 주제가 아닐 것 같습니다. – EnricoGiampieri

+0

공식 목록은이 목록이며 코드를 실행하여 시스템에 어떤 코드가 있는지 직접 확인할 수 있습니다. http :// /www.scipy.org/Cookbook/Matplotlib/Show_colormaps – EnricoGiampieri

관련 문제