2014-11-15 2 views
3

나는 numpy 배열 (예를 들어 array [0] = [0,0,0] 등)의 열로 3D 데이터를 가지고 있습니다.파이썬에서 3D 데이터를 2D 그리드 색상 맵으로 그리는 방법은 무엇입니까?

X  Y  Z 

0  0  0 
0  1  10 
1  0  20 
1  1  30 

I 각 (X, Y) 좌표의 좌표를 중심으로 사각을 갖도록 0 Z 값을 나타내는 (30) (예를 들어)에서 년 Colorbar와,이 플롯 싶다.

등고선을 오버레이하고 싶지만 질문의 첫 번째 부분이 가장 중요합니다.

데이터를 이미 격자화한 사용자에게는 도움이되지만 내 열 데이터를 호출하는 데 가장 적합한 matplotlib 루틴을 알지 못합니다. 또한, 이것은 과학적인 출판을위한 것이며, 그래서 좋은 품질과 모양이 될 필요가 있습니다! 누군가가 도울 수 있기를 바랍니다!

+2

좋은 질문입니다. 'scipy.interpolate.interp2d'를 사용하여 함수를 만들고 일반 격자에 다시 샘플링 한 다음 전체를 이미지로 표시 할 수 있습니다. 또 다른 가능성은'mayavi.mlab.triangular_mesh'를 사용하는 것일 수 있습니다 만, 가장 가까운 이웃을 사용하여 삼각형을 직접 만들어야 할 수도 있습니다. mayavi에는 실제로이 작업을 처리하는 간단한 플로팅 기능이 실제로있을 수 있습니다. – eickenberg

+1

데이터가 이미 직선 그리드에 정의되어있는 것 같습니다. –

답변

2

griddata을 사용하면 데이터를 올바르게 그리드 할 수 있습니다.

import numpy as np 
from matplotlib.mlab import griddata 

x = np.array([0,0,1,1]) 
y = np.array([0,1,0,1]) 
z = np.array([0,10,20,30]) 
xi = np.arange(x.min(),x.max()+1) 
yi = np.arange(y.min(),y.max()+1) 
ar = griddata(x,y,z,xi,yi) 

# ar is now 
# array([[ 0., 20.], 
#  [ 10., 30.]]) 

매핑 xiyi 포인트의 선택은 당신에게 달려있다, 그들은 당신을 위해 보간 할 수 griddata 같은 정수가 될 필요가 없습니다.

관련 문제