def vertical_plane(self,**kwargs): field_array=None for key,value in kwargs.iteritems(): if key == 'field': isWind=False field_array=value if key == 'spd': isWind=True windname=value elif key == 'sliceo': self.sliceo=value u_array=self.u_array v_array=self.v_array w_array=self.w_array self.slice_type='vertical' self.set_panel(option=self.slice_type,wind=isWind) figsize=self.figure_size['vertical'] fig = plt.figure(figsize=figsize) plot_grids=ImageGrid( fig,111, nrows_ncols = self.rows_cols, axes_pad = 0.0, add_all = True, share_all=False, label_mode = "L", cbar_location = "top", cbar_mode="single", aspect=True) """ get list with slices """ uComp = self.get_slices(u_array) vComp = self.get_slices(v_array) wComp = self.get_slices(w_array) profiles = Terrain.get_altitude_profile(self) if isWind: if windname == 'u': field_group = uComp colorName='U' varName=colorName elif windname == 'v': field_group = vComp colorName='V' varName=colorName elif windname == 'w': field_group = wComp colorName='WVA' varName=colorName else: field_group = self.get_slices(field_array) varName=self.var ''' field extent ''' extent1=self.get_extent() ''' if zoomOpt is false then extent1=extent2 ''' if self.zoomOpt: opt=self.zoomOpt[0] extent2=cm.zoom_in(self,extent1,self.zoomCenter[opt]) else: extent2=extent1 ''' scale for horizontal axis''' self.scale=20 ''' adjust vertical extent ''' if self.sliceo=='meridional': extent3=cm.adjust_extent(self,extent1,'meridional','data') extent4=cm.adjust_extent(self,extent2,'meridional','detail') horizontalComp=vComp geo_axis='Lon: ' elif self.sliceo=='zonal': extent3=cm.adjust_extent(self,extent1,'zonal','data') extent4=cm.adjust_extent(self,extent2,'zonal','detail') horizontalComp=uComp geo_axis='Lat: ' """creates iterator group """ group=zip(plot_grids, field_group, horizontalComp, wComp, profiles['altitude'],profiles['axis']) """make gridded plot """ p=0 for g,field,h_comp,w_comp,prof,profax in group: if isWind: im, cmap, norm = self.add_field(g, array=field.T, field=varName, name=colorName, ext=extent3) else: im, cmap, norm = self.add_field(g, array=field.T, field=varName, name=self.var, ext=extent3) self.add_terrain_profile(g,prof,profax) if self.wind and not isWind: self.add_windvector(g,h_comp.T,w_comp.T) self.add_slice_line(g) g.set_xlim(extent4[0], extent4[1]) g.set_ylim(extent4[2], extent4[3]) if p == 0: self.match_horizontal_grid(g) self.adjust_ticklabels(g) if self.verticalGridMajorOn: g.grid(True, which = 'major',linewidth=1) if self.verticalGridMinorOn: g.grid(True, which = 'minor',alpha=0.5) g.minorticks_on() if self.sliceo=='meridional': geotext=geo_axis+str(self.slicem[p]) elif self.sliceo=='zonal': geotext=geo_axis+str(self.slicez[p]) g.text( 0.03, 0.9, geotext, fontsize=self.zlevel_textsize, horizontalalignment='left', verticalalignment='center', transform=g.transAxes) p+=1 # add color bar plot_grids.cbar_axes[0].colorbar(im,cmap=cmap, norm=norm) # add title titext='Dual-Doppler Synthesis: '+ self.get_var_title(varName)+'\n' line_start='\nStart time: '+self.synth_start.strftime('%Y-%m-%d %H:%M')+' UTC' line_end='\nEnd time: '+self.synth_end.strftime('%Y-%m-%d %H:%M')+' UTC' fig.suptitle(titext+self.file+line_start+line_end) # show figure plt.draw()
def horizontal_plane(self , **kwargs): field_array=kwargs['field'] u_array=self.u_array v_array=self.v_array w_array=self.w_array if self.mask: field_array.mask=w_array.mask u_array.mask=w_array.mask v_array.mask=w_array.mask if self.panel: self.set_panel(option='single') figsize=self.figure_size['single'] else: self.set_panel(option='multi') figsize=self.figure_size['multi'] self.slice_type='horizontal' with sns.axes_style("white"): fig = plt.figure(figsize=figsize) plot_grids=ImageGrid( fig,111, nrows_ncols = self.rows_cols, axes_pad = 0.0, add_all = True, share_all=False, label_mode = "L", cbar_location = "top", cbar_mode="single") ''' field extent ''' extent1=self.get_extent() ''' if zoomOpt is false then extent1=extent2 ''' if self.zoomOpt: opt=self.zoomOpt[0] extent2=cm.zoom_in(self,extent1,self.zoomCenter[opt]) else: extent2=extent1 ''' make slices ''' field_group = self.get_slices(field_array) ucomp = self.get_slices(u_array) vcomp = self.get_slices(v_array) ''' creates iterator group ''' group=zip(plot_grids,self.zlevels,field_group,ucomp,vcomp) gn=0 ''' make gridded plot ''' for g,k,field,u,v in group: self.add_coastline(g) self.add_flight_path2(g) im, cmap, norm = self.add_field2(g, array=field.T, field=self.var) if self.terrain.file: Terrain.add_contour(g,k,self) if self.wind: self.add_windvector(g,u.T,v.T,gn) if self.slice: self.add_slice_line(g,gn) if self.markersLocations: self.add_location_markers(g, gn) g.set_xlim(extent2[0], extent2[1]) g.set_ylim(extent2[2], extent2[3]) if gn == 0: legname = os.path.basename(self.file) g.text(0.02,0.15, legname[:3].upper() + " " + legname[3:5], horizontalalignment='left', transform = g.transAxes,weight='bold') if self.horizontalGridMajorOn: g.grid(True, which = 'major',linewidth=1) if self.horizontalGridMinorOn: g.grid(True, which = 'minor',alpha=0.5) g.minorticks_on() ztext=str(k)+'km MSL' g.text( 0.02, 0.03, ztext, fontsize=self.zlevel_textsize, horizontalalignment='left', verticalalignment='center', transform=g.transAxes) self.horizontal['ymajor'] = g.get_yticks(minor=False) self.horizontal['yminor'] = g.get_yticks(minor=True) self.horizontal['xmajor'] = g.get_xticks(minor=False) self.horizontal['xminor'] = g.get_xticks(minor=True) gn+=1 ''' add color bar ''' plot_grids.cbar_axes[0].colorbar(im,cmap=cmap, norm=norm) ''' add title ''' st=self.synth_start en=self.synth_end t1='Dual-Doppler Synthesis: '+ self.get_var_title(self.var) +'\n' t2='Date: '+st.strftime('%Y-%m-%d') + '\n' t3= 'Time: '+st.strftime('%H:%M')+'-'+en.strftime('%H:%M UTC') + '\n' # fig.suptitle(t1+t2+t3+self.file) fig.suptitle(t1+t2+t3) plt.draw() self.haxis=g