# -*- coding: utf8 -*- # Read sea level at Brest from vcmq import cdms2, P, curve2, savefigs, data_sample f = cdms2.open(data_sample("tide.sealevel.BREST.mars.nc")) sea_level = f('sea_level') f.close() # Filtering from vacumm.tide.filters import demerliac cotes, tide = demerliac(sea_level, get_tide=True) # Plots kwplot = dict(date_fmt='%d/%m', show=False, date_rotation=0) # - tidal signal curve2(sea_level, 'k', subplot=211, label='Original', title='Sea level at Brest', **kwplot) curve2(tide, 'b', label='Tidal signal', **kwplot) P.legend().legendPatch.set_alpha(.7) # - surcotes/decotes curve2(cotes, 'r', subplot=212, hspace=.3, label='Demerliac', **kwplot) P.legend().legendPatch.set_alpha(.7) savefigs(__file__, savefigs_pdf=True) P.close()
P.figure(figsize=(8, 4)) iyis = [3, 4] for iyi in iyis: label = iyi == iyis[0] P.plot(xi, zzi[iyi], 'ob-', markersize=8, label='Original' if label else None) P.plot(xo, zzo[iyi * r], 'or-', markersize=5, lw=.8, label='Interpolated' if label else None) P.legend(loc='best', framealpha=0.5) P.grid() P.title('Section') P.tight_layout() savefigs(code_file_name(ext='_0.png'), verbose=False, pdf=True) # Maps P.figure(figsize=(8, 4)) levels = auto_scale(vmin=zzi.min(), vmax=zzi.max(), nmax=30) P.subplot(121) P.contourf(xxi, yyi, zzi, levels=levels) P.contour(xxi, yyi, zzi, linewidths=0.1, levels=levels, colors='k') add_grid((xxi, yyi), alpha=.3, centers=True) for iyi in iyis: P.axhline(yi[iyi], linestyle='--', color='k') P.title('Original')
yy = N.array([0., 0., 2., 2.]) # From Polygon P.figure(figsize=(5, 5)) p0 = create_polygon(Polygon(N.array([xx, yy]).T)) plot_polygon(p0, color='b', label='From poly') # From data p1 = create_polygon(N.array([xx, yy]).T - .25) plot_polygon(p1, color='r', label='From data') # From transposed data p2 = create_polygon(N.array([xx, yy]) - 0.5) plot_polygon(p2, color='g', label='From transposed data') # From min/max p3 = create_polygon([xx.min(), yy.min(), xx.max(), yy.max()]) plot_polygon(p3, color='m', label='From min/max') # With projection proj = lambda x, y: (x * 1.5, y * 1.5) p4 = create_polygon(p0, proj=proj) plot_polygon(p4, color='cyan', label='With projection') # Save P.title('create_polygon') P.legend(loc='best') P.savefig(code_file_name(ext='png')) P.show() P.close()
nx = ny = 50 np = 500 mtype = 'gauss' dmax = 2.5 from vcmq import N, P, code_file_name, savefigs from vacumm.misc.grid.kriging import gridded_gauss3, random_gauss3, variogram, variogram_fit # Generate random field xxg, yyg, zzg = gridded_gauss3(nx=nx, ny=ny) x, y, z = random_gauss3(np=np) # Variogram from data d, v = variogram(x, y, z, dmax=dmax) # Variogram fit with null nugget vm = variogram_fit(x, y, z, mtype, n=0, dmax=dmax) D = N.linspace(0, d.max()) V = vm(D) # Compare P.figure(figsize=(6, 4)) P.title('Variogram') P.plot(d, v, 'ob', label='From data') P.plot(D, V, '-r', label='Fitted model (%s)'%mtype) P.legend(loc='best') P.ylim(ymin=0) savefigs(code_file_name(ext=False), pdf=True, verbose=False) P.close()
xo = N.linspace(xi[0], xi[-1], (nxi-1)*r+1) yo = N.linspace(yi[0], yi[-1], (nyi-1)*r+1) xxo, yyo = N.meshgrid(xo, yo) # Interpolate zzo = krig(xxi.ravel(), yyi.ravel(), zzi.ravel(), xxo.ravel(), yyo.ravel()) zzo.shape = xxo.shape # Section P.figure(figsize=(8, 4)) iyis = [3, 4] for iyi in iyis: label = iyi==iyis[0] P.plot(xi, zzi[iyi], 'ob-', markersize=8, label='Original' if label else None) P.plot(xo, zzo[iyi*r], 'or-', markersize=5, lw=.8, label='Interpolated' if label else None) P.legend(loc='best', framealpha=0.5) P.grid() P.title('Section') P.tight_layout() savefigs(code_file_name(ext='_0.png'), verbose=False, pdf=True) # Maps P.figure(figsize=(8, 4)) levels = auto_scale(vmin=zzi.min(), vmax=zzi.max(), nmax=30) P.subplot(121) P.contourf(xxi, yyi, zzi, levels=levels) P.contour(xxi, yyi, zzi, linewidths=0.1, levels=levels, colors='k') add_grid((xxi, yyi), alpha=.3, centers=True) for iyi in iyis: P.axhline(yi[iyi], linestyle='--', color='k') P.title('Original')
x = P.rand(np)*dxy+xc y = P.rand(np)*dxy+yc xx.extend(x) yy.extend(y) P.scatter(x, y, c=colors[i:i+1], s=40) P.title('Original (mixed clouds)') # Spliting indices, centroids = cloud_split(xx, yy, getdist=False, getcent=True, npmax=npmax) # Plot P.subplot(122, aspect=1) xx = N.array(xx) yy = N.array(yy) msize = 0 for i, select in enumerate(indices): x = xx[select] y = yy[select] P.scatter(x, y, c=colors[i:i+1], s=40, label='size=%i'%len(x)) P.scatter(centroids[i:i+1, 0], centroids[i:i+1, 1], c=colors[i:i+1], s=100, lw=2) msize = max(len(x), msize) P.legend(loc='upper left').get_frame().set_alpha(.5) P.title('Split clouds: max size=%i'%npmax) savefigs(code_file_name(ext='png'), pdf=True, verbose=False) #P.tight_layout() P.close() # For unitest result = {'assertLess':[msize, npmax]}
# -*- coding: utf8 -*- # Read sea level at Brest from vcmq import cdms2, P, curve2, savefigs, data_sample f = cdms2.open(data_sample("tide.sealevel.BREST.mars.nc")) sea_level = f('sea_level') f.close() # Filtering from vacumm.tide.filters import demerliac cotes, tide = demerliac(sea_level, get_tide=True) # Plots kwplot = dict(date_fmt='%d/%m', show=False, date_rotation=0) # - tidal signal curve2(sea_level, 'k', subplot=211, label='Original', title='Sea level at Brest',**kwplot) curve2(tide, 'b', label='Tidal signal', **kwplot) P.legend().legendPatch.set_alpha(.7) # - surcotes/decotes curve2(cotes, 'r', subplot=212, hspace=.3, label='Demerliac', **kwplot) P.legend().legendPatch.set_alpha(.7) savefigs(__file__, savefigs_pdf=True)
# Spliting indices, centroids = cloud_split(xx, yy, getdist=False, getcent=True, npmax=npmax) # Plot P.subplot(122, aspect=1) xx = N.array(xx) yy = N.array(yy) msize = 0 for i, select in enumerate(indices): x = xx[select] y = yy[select] P.scatter(x, y, c=colors[i:i + 1], s=40, label='size=%i' % len(x)) P.scatter(centroids[i:i + 1, 0], centroids[i:i + 1, 1], c=colors[i:i + 1], s=100, lw=2) msize = max(len(x), msize) P.legend(loc='upper left').get_frame().set_alpha(.5) P.title('Split clouds: max size=%i' % npmax) savefigs(code_file_name(ext='png'), pdf=True, verbose=False) #P.tight_layout() P.close() # For unitest result = {'assertLess': [msize, npmax]}