2016-09-07 4 views
0

Я использую данные Lat, Lon и хотел бы усреднить все sample_data в ячейке сетки (скажем, 1km x 1km) равномерно по всей области, а затем построить ее аналогично этой записи, но с базой данных, я немного застрял с чего начать: 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

Я хотел бы усреднить «возраст» sample_data, в пределах определенной сетки lat/lon, и производить множество графиков этого «возрастного значения» с течением времени. Это 4D-массив, состоящий из значений Z, а также переменной времени - я должен был добавить это в начальный вопрос. –

ответ

0

Ну, вы можете получить максимум и минимум широты и долготы.

А затем получить возраст sample_data в определенное время t с помощью:

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 
Смежные вопросы