from scipy.ndimage.filters import gaussian_filter
lats = tp.coords['latitude'][:]
lons = tp.coords['longitude'][:]
ct_x=[-79.617,-75.717,-86.917,-93.783]
ct_y=[43.667,45.383,49.767,51.067]
ct_n=['Toronto','Ottawa','Geraldton','Red Lake']
projection = ccrs.PlateCarree()
provinc_bodr = cartopy.feature.NaturalEarthFeature(category='cultural',
name='admin_1_states_provinces_lines', scale='50m', facecolor='none', edgecolor='k')
axes_class = (GeoAxes,
dict(map_projection=projection))
# lons, lats = np.meshgrid(lons, lats)
title_text=["season=DJF(m/s)", "season=MAM(m/s)", "season=JJA(m/s)", "season=SON(m/s)"]
fig = plt.figure(figsize=(15,15))
axgr = AxesGrid(fig, 111, axes_class=axes_class,
nrows_ncols=(1, 1),
axes_pad=0.6,
cbar_location='right',
cbar_mode='single',
cbar_pad=0.2,
cbar_size='2%',
label_mode='') # note the empty label_mode
for i, ax in enumerate(axgr):
ax.add_feature(cfeature.OCEAN)
ax.add_feature(cfeature.COASTLINE,linewidth=0.3)
ax.add_feature(cfeature.BORDERS, linestyle='-', alpha=1)
ax.add_feature(cfeature.LAKES, alpha=0.5)
ax.add_feature(cfeature.RIVERS)
ax.add_feature(provinc_bodr, linestyle='-', linewidth=1, edgecolor="k", zorder=10, alpha=0.5)
ax.set_title('Annual Total Precipitation:1991-2020 (mm)')
ax.set_xticks(np.linspace(-100, -70, 5), crs=projection)
ax.set_yticks(np.linspace(35, 65, 5), crs=projection)
lon_formatter = LongitudeFormatter(zero_direction_label=True)
lat_formatter = LatitudeFormatter()
ax.xaxis.set_major_formatter(lon_formatter)
ax.yaxis.set_major_formatter(lat_formatter)
# ax.imshow(im, aspect='auto',extent=(-75,-70,35,37),zorder=-1)
# ax.text(-75,37.5,"yorku.ca/ocdp",fontsize=18)
ax.text(-85,60,"Hudson Buy", fontsize=20,color='b',alpha=0.5)
ax.annotate(ct_n[0], (ct_x[0], ct_y[0]),va="top", ha="center",fontsize=14,color="blue")
ax.annotate(ct_n[1], (ct_x[1], ct_y[1]),va="top", ha="center",fontsize=14,color="blue")
ax.annotate(ct_n[2], (ct_x[2], ct_y[2]),va="top", ha="center",fontsize=14,color="blue")
ax.annotate(ct_n[3], (ct_x[3], ct_y[3]),va="top", ha="center",fontsize=14,color="blue")
# p = ax.contourf(lons, lats, t1m,50,
# transform=projection,
# cmap='BrBG')
thedata = np.mean(R1mm[list(np.arange(10,40))],axis=0)
thesmdata=gaussian_filter(thedata, sigma=3, order=0)
p=ax.pcolormesh(lons, lats, thedata,cmap='BrBG',transform=ccrs.PlateCarree())
ax.scatter(ct_x, ct_y,transform=ccrs.PlateCarree(),color='r')
l = ax.contour(lons, lats, thesmdata,15,colors=['black'], linewidth=0.3,
transform=ccrs.PlateCarree())
ax.clabel(
l, # Typically best results when labelling line contours.
colors=['black'],
manual=False, # Automatic placement vs manual placement.
inline=True, # Cut the line where the label will be placed.
fmt=' {:.0f} '.format, # Labes as integers, with some extra space.
)
axgr.cbar_axes[0].colorbar(p)
plt.show()
Like this:
Like Loading...
One Reply to “Sample python code for smoothing contour”
https://unidata.github.io/python-gallery/examples/Smoothing_Contours.html