【发布时间】:2020-08-19 08:55:15
【问题描述】:
像这样绘制一个简单的热图:
但我得到的是这个:
这里是代码sn-p
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()
谁能告诉我我做错了什么。
【问题讨论】:
-
您是否也可以共享输入数据,以便其他人可以测试您的代码?我猜在原始动画中,使用了干净的数据 - 被云层覆盖的区域被遮盖,因此不显示任何颜色。
标签: python numpy matplotlib data-science