Exemplo n.º 1
0
    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