2013-01-02 3 views
7

일부 데이터를 imshow() 플롯에 넣으려고합니다. 내 문제는 데이터가 MxN 배열이 아니라 3xN 배열 (x 및 y 좌표 및 값)로 제공된다는 것입니다. 점들은 정규 격자로 배열되지 않지만 [xmin, xmax, ymin 및 ymax] = [- pi/2, pi/2,0,3.5] 내에 있습니다.matplotlib 불규칙 간격의 데이터 포인트가있는 imshow()

In [117]: shape(data) 
Out[117]: (3L, 102906L) 

어떻게 데이터에서 멋진 이미지 플롯을 얻을 수 있습니까? 도움 주셔서 대단히 감사합니다.

btw 데이터는 막대 표면의 온도 값을 축 방향 및 방위각 위치의 함수로 나타냅니다. cfd 메시라고 생각하십시오.

+1

HM은 결국 interp2d 작업 ... 당신이 당신의 문제를 해결하는 경우 당신이 당신의 자신의 질문에 대답하고 대답을 받아 주시기 바랍니다 수 – user1805743

+1

를 볼 수 있습니다을 할 것입니다? – tacaswell

답변

12

보간을 위해 griddata-method를 사용하는 것이 좋습니다. 샘플은 다음과 같습니다.

import numpy as np 
from matplotlib.mlab import griddata 
import matplotlib.pyplot as plt 

xs0 = np.random.random((1000)) * np.pi - np.pi/2 
ys0 = np.random.random((1000)) * 3.5 
zs0 = np.random.random((1000)) 

N = 30j 
extent = (-np.pi/2,np.pi/2,0,3.5) 

xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N] 

resampled = griddata(xs0, ys0, zs0, xs, ys) 

plt.imshow(resampled.T, extent=extent) 
plt.plot(xs0, ys0, "r.") 
plt.plot(xs, ys, "b.") 
plt.title("imshow for irregularly spaced data using griddata") 
plt.show() 

3 * X- 배열에서 3 개의 X- 배열로 전환하는 것이 확실합니다.

결과는 다음과 같습니다

Sample

레드 포인트는 이제 정기적으로 간격 데이터에 대한 데이터 "원래"위치, 파란색 점을 보여줍니다.

griddata는 마스크 된 배열을 반환합니다. 보간을 평가할 수없는 모든 점은 마스킹 된 다음 흰색 영역으로 그려집니다.

HTH, 토르스텐

+0

나를 도울 때이 링크를 막 게시하려고했으나 더 빨라졌습니다. http://www.scipy.org/Cookbook/Matplotlib/Gridding_irregularly_spaced_data – user1805743

관련 문제