2016-09-07 3 views
0

Lat, Lon 데이터를 사용하고 있으며 전체 영역에 걸쳐 균일하게 표 셀 (예 : 1km x 1km) 내의 모든 sample_data를 평균화하고 싶습니다. 베이스 맵으로, 나는 시작 붙어 조금 해요 : Heatmap with text in each cell with matplotlib's pyplotPython netcdf가 그리드에 데이터를 플롯

다음은 각 시점을 통해 플롯 값 아래의 코드, 나는 각각 전체 데이터 영역에 걸쳐 정의 그리드 사각형 내의 데이터를 평균 싶습니다 설정된 시간 간격 (즉, 시간 경과/영화에 대한 이미지 세트 만들기)에서 그리드가있는 기준면에 평균 값을 그립니다.

import matplotlib.pyplot as plt 
from mpl_toolkits.basemap import Basemap 
from netCDF4 import Dataset 
import matplotlib.cm as cm 

data = Dataset(netcdf_data,'r') 

lat = data.variables['lat'][:] 
lon = data.variables['lon'][:] 
time = data.variables['time'][:] 


fig = plt.figure(figsize=(1800,1200)) 
m = Basemap(projection='ortho',lon_0=5,lat_0=35,resolution='l') 
m.drawcoastlines() 


for value in range(0,len(sample_data)): 
    m.plot(lat[:,value], lon[:,value], alpha=1, latlon=True) 

plt.show() 
+0

당신이 같은 질문에 자세한 내용을 제공 할 수 데이터 배열의 구조와 평균값을 얻으려고하는 값은 무엇입니까? –

+0

정의 된 lat/lon 그리드 내에서 sample_data의 'age'를 평균화하고 시간 경과에 따라이 'age value'의 여러 플롯을 생성하고 싶습니다. 그것은 시간 변수뿐만 아니라 Z 값으로 구성된 4D 배열입니다. 초기 질문에서 이것을 추가해야합니다. –

답변

0

음, 위도와 경도의 최대 값과 최소값을 얻을 수 있습니다.

그리고 사용하여 특정 시간 tsample_data의 나이를 얻을 :

data_within_box = sample_data[minLat:maxLat,minLon:maxLon,:,t] 
avg_age = numpy.average(data_within_box) 
0

이 그 일의 원유 방법입니다

lat_1 = 58 
lat_2 = 60 
lon_1 = 2 
lon_2 = 5 
size = 0 
age2 = 0 

for parts in range(10): 
    for length in range(len(lon)): 
     if lon[length,parts] < lon_2: 
      if lon[length,parts] > lon_1: 
       if lat[length,parts] > lat_1: 
        if lat[length,parts] < lat_2: 
         age = (age[length, parts]) 
         size = size + 1 
         age2 = age + age2 
         mean = age2/size 
관련 문제