def plot(xx, yy, target, label, figfiles, figfile, lon=None, lat=None, show=False): xs, ys, mask = coord2slice(target, lon=lon, lat=lat) P.figure(figsize=(6, 3.5)) P.title('Target=%(label)s / select: lon=%(lon)s, lat=%(lat)s'%locals()) add_grid((xx, yy)) xx = xx.asma() yy = yy.asma() if isinstance(lon, tuple): P.axvline(lon[0], color='m', ls='--', lw=2) P.axvline(lon[1], color='m', ls='--', lw=2) elif isinstance(lon, slice): i, j, k = lon.indices(xx.shape[1]) P.plot(xx[:, i], yy[:, i], 'c--', lw=2) P.plot(xx[:, j-1], yy[:, j-1], 'c--', lw=2) if isinstance(lat, tuple): P.axhline(lat[0], color='m', ls='--', lw=2) P.axhline(lat[1], color='m', ls='--', lw=2) elif isinstance(lat, slice): i, j, k = lat.indices(yy.shape[0]) P.plot(xx[i], yy[i], 'c--', lw=2) P.plot(xx[j-1], yy[j-1], 'c--', lw=2) P.xticks(N.arange(xx.min()-1, xx.max()+1)) P.yticks(N.arange(yy.min()-1, yy.max()+1)) xxi, yyi = xx, yy xx = xx[ys, xs] yy = yy[ys, xs] # mask = mask[ys, xs] xxb, yyb = meshbounds(xx, yy) P.pcolor(xxb, yyb, mask, shading='faceted') P.scatter(xx.ravel(), yy.ravel(), c=(0, 1, 0)) P.grid('on') P.axis('image') P.tight_layout() i = len(figfiles) savefig = figfile%i if os.path.exists(savefig): os.remove(savefig) P.savefig(savefig) figfiles.append(savefig) if show: P.show() else: P.close()
dyi = (yi[1]-yi[0])*0.49 dyo = (yo[1]-yo[0])*0.49 yyi = N.resize(yi, vari.shape)+N.random.uniform(-dyi, dyi, vari.shape) yyo = N.resize(yo, (nx, len(yo)))+N.random.uniform(-dyo, dyo, (nx, len(yo))) yyib, xxib = meshcells(yyi, x) yyob, xxob = meshcells(yyo, x) varon = N.ma.masked_values(interp1dxx(vari.filled(), yyi, yyo, mv, 0, extrap=0), mv) varol = N.ma.masked_values(interp1dxx(vari.filled(), yyi, yyo, mv, 1, extrap=0), mv) varoh = N.ma.masked_values(interp1dxx(vari.filled(), yyi, yyo, mv, 3, extrap=0), mv) kw = dict(vmin=vari.min(), vmax=vari.max()) axlims = [x[0], x[-1], yo[0], yo[-1]] P.figure(figsize=(8, 8)) P.subplot(221) P.pcolor(xxib, yyib, vari) P.axis(axlims) P.title('Original') P.subplot(222) P.pcolor(xxob, yyob, varon, **kw) P.axis(axlims) P.title('Nearest1dxx') P.subplot(223) P.pcolor(xxob, yyob, varol, **kw) P.axis(axlims) P.title('Linear1dxx') P.subplot(224) P.pcolor(xxob, yyob, varoh, **kw) P.axis(axlims) P.title('Hermit1dxx') P.tight_layout()
vari[int(nyi*0.4):int(nyi*0.4)+3, int(nxi*0.4):int(nxi*0.4)+2] = N.ma.masked xxib, yyib = meshcells(xi, yi) nxo = 40 nyo = 25 xo = N.linspace(int(nxi*0.2),int(nxi*1.2),nxo) yo = N.linspace(int(-nyi*0.2),int(nyi*0.8),nyo) xxob, yyob = meshcells(xo, yo) vari.shape = (1, )+vari.shape varo = N.ma.masked_values(dstwgt(vari.filled(), xi, yi, xo, yo, mv, 0), mv) kw = dict(vmin=vari.min(), vmax=vari.max()) axlims = [min(xi.min(), xo.min()), max(xi.max(), xo.max()), min(yi.min(), yo.min()), max(yi.max(), yo.max())] P.figure(figsize=(8, 4)) P.subplot(211) P.pcolor(xxib, yyib, vari[0], **kw) P.axis(axlims) P.title('Original') P.subplot(212) P.pcolor(xxob, yyob, varo[0], **kw) P.axis(axlims) P.title('Distance weight') P.tight_layout() figfile = code_file_name(ext='png') if os.path.exists(figfile): os.remove(figfile) P.savefig(figfile) P.show() P.close()
yyo = N.resize(yo, (nx, len(yo))) + N.random.uniform(-dyo, dyo, (nx, len(yo))) yyib, xxib = meshcells(yyi, x) yyob, xxob = meshcells(yyo, x) varon = N.ma.masked_values( interp1dxx(vari.filled(), yyi, yyo, mv, 0, extrap=0), mv) varol = N.ma.masked_values( interp1dxx(vari.filled(), yyi, yyo, mv, 1, extrap=0), mv) varoh = N.ma.masked_values( interp1dxx(vari.filled(), yyi, yyo, mv, 3, extrap=0), mv) kw = dict(vmin=vari.min(), vmax=vari.max()) axlims = [x[0], x[-1], yo[0], yo[-1]] P.figure(figsize=(8, 8)) P.subplot(221) P.pcolor(xxib, yyib, vari) P.axis(axlims) P.title('Original') P.subplot(222) P.pcolor(xxob, yyob, varon, **kw) P.axis(axlims) P.title('Nearest1dxx') P.subplot(223) P.pcolor(xxob, yyob, varol, **kw) P.axis(axlims) P.title('Linear1dxx') P.subplot(224) P.pcolor(xxob, yyob, varoh, **kw) P.axis(axlims) P.title('Hermit1dxx') P.tight_layout()
nb = 10 xxbi, yybi = meshbounds(xxi, yyi) # Output grid grido = rotate_grid((N.linspace(0, 6, 50) - 1, N.linspace(0, 4, 35) + 1.), -20) xxo = grido.getLongitude()[:].filled() yyo = grido.getLatitude()[:].filled() xxbo, yybo = meshbounds(xxo, yyo) # Nearest varo = nearest2d(vari, xxi, yyi, xxo, yyo, nb) # Plot vmin = varo.min() vmax = varo.max() P.figure(figsize=(8, 4)) P.subplot(121, aspect=1) P.pcolor(xxbi, yybi, vari[0], vmin=vmin, vmax=vmax) add_grid(grido) P.title('original') P.subplot(122, aspect=1) P.pcolor(xxbo, yybo, varo[0], vmin=vmin, vmax=vmax) add_grid(gridi) P.title('nearest2d') P.axis('image') figfile = code_file_name(ext='png') if os.path.exists(figfile): os.remove(figfile) P.savefig(figfile) P.show() P.close()
xo.setBounds(bounds1d(xo)) yo.setBounds(bounds1d(yo)) xxob, yyob = meshbounds(xo, yo) # Regridding varo, wo = vari.regrid(grido, tool='regrid2', returnTuple=1) # Plot kw = dict(fill='pcolor', contour=False, xhide=True, yhide=True, xticks=[], yticks=[], cmap='jet', colorbar=False, show=False) P.figure(figsize=(6, 3)) p = plot2d(vari, subplot=131, title='Original', **kw) add_grid(gridi) add_grid(grido) P.axis('image') p = plot2d(varo, subplot=132, title='Regridded', **kw) add_grid(gridi) add_grid(grido) P.axis('image') P.subplot(133) P.pcolor(xxob, yyob, wo) add_grid(grido) P.title("Output weights") P.tight_layout() savefigs(code_file_name(),pdf=True, verbose=False) P.close()
zzbi = relpos2index(iib, jjb, nyi) # Input random points N.random.seed(0) np = 100 xxo = N.random.random(np)*(xxbi.max()-xxbi.min()) + xxbi.min() yyo = N.random.random(np)*(yybi.max()-yybi.min()) + yybi.min() xxo = N.concatenate((xxo, xxi.ravel())) yyo = N.concatenate((yyo, yyi.ravel())) np = xxo.size # Convert to relative indices zzo = N.zeros(np)-1 for i, (xo, yo) in enumerate(zip(xxo, yyo)): p, q = curv2rel_single(xxbi, yybi, xo, yo) # print xo, yo, '|', p, q, (q-1) * nxi + p - 1 if q>=0: zzo[i] = relpos2index(p-1, q-1, nyi) # Plot vmin = zzbi.min() vmax = zzbi.max() P.pcolor(xxbi, yybi, zzi, vmin=vmin, vmax=vmax) P.scatter(xxo, yyo, c=zzo, vmin=vmin, vmax=vmax, s=80) P.grid() P.title('curv2rel_single') figfile = code_file_name(ext='png') if os.path.exists(figfile): os.remove(figfile) P.savefig(figfile) P.close()
iib, jjb = meshbounds(ii, jj) zzi = jj * nyi + ii #relpos2index(ii, jj) zzbi = jjb * nyi + iib # ny+1? relpos2index(iib, jjb) # Input random points N.random.seed(0) np = 100 xxo = N.random.random(np) * (xxbi.max() - xxbi.min()) + xxbi.min() yyo = N.random.random(np) * (yybi.max() - yybi.min()) + yybi.min() xxo = N.concatenate((xxo, xxi.ravel())) yyo = N.concatenate((yyo, yyi.ravel())) np = xxo.size # Convert to relative indices pp, qq = curv2rel(xxbi, yybi, xxo, yyo) bad = pp < 0 zzo = (qq - 1) * nyi + pp - 1 #relpos2index(pp-1, qq-1) zzo[bad] = -1 # Plot vmin = zzbi.min() vmax = zzbi.max() P.pcolor(xxbi, yybi, zzi, vmin=vmin, vmax=vmax) P.scatter(xxo, yyo, c=zzo, vmin=vmin, vmax=vmax, s=80) P.grid() P.title('curv2rel') figfile = code_file_name(ext='png') if os.path.exists(figfile): os.remove(figfile) P.savefig(figfile) P.close()
nb = 10 xxbi, yybi = meshbounds(xxi, yyi) # Output grid grido = rotate_grid((N.linspace(0, 6, 50)-1, N.linspace(0, 4, 35)+1.), -20) xxo = grido.getLongitude()[:].filled() yyo = grido.getLatitude()[:].filled() xxbo, yybo = meshbounds(xxo, yyo) # Nearest varo = nearest2d(vari, xxi, yyi, xxo, yyo, nb) # Plot vmin = varo.min() vmax = varo.max() P.figure(figsize=(8, 4)) P.subplot(121, aspect=1) P.pcolor(xxbi, yybi, vari[0], vmin=vmin, vmax=vmax) add_grid(grido) P.title('original') P.subplot(122, aspect=1) P.pcolor(xxbo, yybo, varo[0], vmin=vmin, vmax=vmax) add_grid(gridi) P.title('nearest2d') P.axis('image') figfile = code_file_name(ext='png') if os.path.exists(figfile): os.remove(figfile) P.savefig(figfile) P.show() P.close()
# Regridding varo, wo = vari.regrid(grido, tool='regrid2', returnTuple=1) # Plot kw = dict(fill='pcolor', contour=False, xhide=True, yhide=True, xticks=[], yticks=[], cmap='jet', colorbar=False, show=False) P.figure(figsize=(6, 3)) p = plot2d(vari, subplot=131, title='Original', **kw) add_grid(gridi) add_grid(grido) P.axis('image') p = plot2d(varo, subplot=132, title='Regridded', **kw) add_grid(gridi) add_grid(grido) P.axis('image') P.subplot(133) P.pcolor(xxob, yyob, wo) add_grid(grido) P.title("Output weights") P.tight_layout() savefigs(code_file_name(), pdf=True, verbose=False) P.close()