#python #numpy #matplotlib #data-science
#python #numpy #matplotlib #наука о данных
Вопрос:
Я пытаюсь повторить это руководство: https://makersportal.com/blog/2019/7/8/satellite-imagery-analysis-in-python-part-i-goes-16-data-netcdf-files-and-the-basemap-toolkit
Для построения простой тепловой карты, подобной этой:
Но то, что я получаю, это :
Вот фрагмент кода
nc_folder = data_path # define folder where .nc files are located
lon, lat = lat_lon_reproj(nc_folder)
data, data_units, data_time_grab, data_long_name, var_name = data_grab(nc_folder, file_indx)
# main data grab from function above
data_bounds = np.where(data.data != 65535)
bbox = [np.min(lon[data_bounds]),
np.min(lat[data_bounds]),
np.max(lon[data_bounds]),
np.max(lat[data_bounds])] # set bounds for plotting
# figure routine for visualization
fig = plt.figure(figsize=(9, 4), dpi=200)
n_add = 0 # for zooming in and out
m = Basemap(llcrnrlon=bbox[0] - n_add, llcrnrlat=bbox[1] - n_add, urcrnrlon=bbox[2] n_add, urcrnrlat=bbox[3] n_add,
resolution='i', projection='cyl')
m.fillcontinents(color='#d9b38c', lake_color='#bdd5d5', zorder=1) # continent colors
m.drawmapboundary(fill_color='#bdd5d5', zorder=0) # ocean color
m.drawcoastlines(linewidth=0.5)
m.drawcountries(linewidth=0.25)
m.drawstates(zorder=2)
m.pcolormesh(lon.data, lat.data, data, latlon=True, zorder=999, shading='gouraud') # plotting actual LST data
parallels = np.linspace(bbox[1], bbox[3], 5)
m.drawparallels(parallels, labels=[True, False, False, False], zorder=2, fontsize=8)
meridians = np.linspace(bbox[0], bbox[2], 5)
m.drawmeridians(meridians, labels=[False, False, False, True], zorder=1, fontsize=8)
cb = m.colorbar()
data_units = ((data_units.replace('-', '^{-')).replace('1', '1}')).replace('2', '2}')
plt.rc('text', usetex=True)
cb.set_label(f'{var_name} {data_units}')
plt.title(' on '.format(data_long_name, data_time_grab))
plt.tight_layout()
plt.savefig('goes_16_data_demo.png', dpi=200, facecolor=[252 / 255, 252 / 255, 252 / 255]) # uncomment to save figure
plt.show()
может кто-нибудь, пожалуйста, сказать мне, что я делаю не так.
Комментарии:
1. Не могли бы вы также поделиться входными данными, чтобы другие могли протестировать ваш код? Я предполагаю, что в оригинальной анимации использовались чистые данные — области, покрытые облаками, замаскированы и, следовательно, не отображают никаких цветов.
Ответ №1:
На самом деле проблема была с данными, я пытался отобразить данные из облака, которые не были чистыми, поэтому я присвоил нижним значениям значение None, чтобы отображались только более высокие значения