def plotgpsonly(TEClist,gpslist,plotdir,m,ax,fig,latlim,lonlim): """ Makes a set of plots when only gps data is avalible.""" maxplot = len(gpslist) strlen = int(sp.ceil(sp.log10(maxplot))+1) fmstr = '{0:0>'+str(strlen)+'}_' plotnum=0 for gps_cur in gpslist: gpshands = [] gpsmin = sp.inf gpsmax = -sp.inf for igpsn, (igps,igpslist) in enumerate(zip(TEClist,gps_cur)): print('Plotting GPS data from rec {0} of {1}'.format(igpsn,len(gps_cur))) # check if there's anything to plot if len(igpslist)==0: continue (sctter,scatercb) = scatterGD(igps,'alt',3.5e5,vbounds=[0,20],time = igpslist,gkey = 'vTEC',cmap='plasma',fig=fig, ax=ax,title='',cbar=True,err=.1,m=m) gpsmin = sp.minimum(igps.times[igpslist,0].min(),gpsmin) gpsmax = sp.maximum(igps.times[igpslist,0].max(),gpsmax) gpshands.append(sctter) scatercb.set_label('vTEC in TECu') #change he z order print('Ploting {0} of {1} plots'.format(plotnum,maxplot)) plt.savefig(os.path.join(plotdir,fmstr.format(plotnum)+'GPSonly.png')) plotnum+=1 for i in reversed(gpshands): i.set_zorder(i.get_zorder()+1)
def plotgpswoptics(allsky_data,TEClist,allskylist,gpslist,plotdir,m,ax,fig,latlim,lonlim): """ Make a set of plots when given both all sky ad GPS are given. Inputs allsky_data - The all sky data as a GeoData object. TEClist - The of GeoData objects derived from the ionofiles. allskylist - A list of list which determines which allsky times are used.""" maxplot = len(allsky_data.times) maxplot = sp.array([len(i) for i in allskylist]).sum() strlen = int(sp.ceil(sp.log10(maxplot))+1) fmstr = '{0:0>'+str(strlen)+'}_' plotnum=0 firstbar = True optbnds = [300,1100] for (optic_times,gps_cur)in zip(allskylist,gpslist): gpshands = [] gpsmin = sp.inf gpsmax = -sp.inf for igpsn, (igps,igpslist) in enumerate(zip(TEClist,gps_cur)): print('Plotting GPS data from rec {0} of {1}'.format(igpsn,len(gps_cur))) # check if there's anything to plot if len(igpslist)==0: continue (sctter,scatercb) = scatterGD(igps,'alt',3.5e5,vbounds=[0,20],time = igpslist,gkey = 'vTEC',cmap='plasma',fig=fig, ax=ax,title='',cbar=True,err=.1,m=m) gpsmin = sp.minimum(igps.times[igpslist,0].min(),gpsmin) gpsmax = sp.maximum(igps.times[igpslist,0].max(),gpsmax) gpshands.append(sctter) scatercb.set_label('vTEC in TECu') #change he z order minz = gpshands[0].get_zorder() for i in reversed(gpshands): i.set_zorder(i.get_zorder()+1) for iop in optic_times: (slice3,cbar3) = slice2DGD(allsky_data,'alt',150,optbnds,title='', time = iop,cmap='gray',gkey = 'image',fig=fig,ax=ax,cbar=False,m=m) slice3.set_norm(colors.PowerNorm(gamma=0.6,vmin=optbnds[0],vmax=optbnds[1])) if firstbar: firstbar=False cbaras = plt.colorbar(slice3,ax=ax,orientation='horizontal') cbaras.set_label('All Sky Scale') slice3.set_zorder(minz) plt.title(insertinfo('GPS $tmdy $thmsehms',posix=gpsmin,posixend=gpsmax)+'\n'+insertinfo('All Sky $tmdy $thmsehms',posix=allsky_data.times[iop,0],posixend=allsky_data.times[iop,1])) print('Ploting {0} of {1} plots'.format(plotnum,maxplot)) plt.savefig(os.path.join(plotdir,fmstr.format(plotnum)+'ASwGPS.png')) plotnum+=1 slice3.remove() for i in reversed(gpshands): i.remove()
def plotsingle(self,m,ax,fig,timenum=0,icase=0,cbarax=[]): """ Make single plot given the desired time and number associated with the desired ISR param. Inputs m - The map handle that is used to plot everything. fig - The figure handle for the plots. ax - The axes handle that the map will be plotted over. timenum - The of GeoData objects derived from the ionofiles. icase - A list of list which determines which allsky times are used. cbarax - The list of color bar axes. Outputs allhands - The list handles of the plotted data. cbarax - A list of """ optbnds = self.params['aslim'] gam=self.params['asgamma'] curwin=self.Regdict['Time'][timenum] allhands = [[]] titlelist = [] if len(cbarax)==0: wid = .3/self.numGD cbarax=[fig.add_axes([.7+i*wid,.3,wid/2.,.4]) for i in range(self.numGD)] fig.tight_layout(rect=[0,.05,.7,.95]) cbcur=0 if not self.GDGPS is None: gpshands = [] gpsbounds = self.params['gpslim'] for igps,igpslist in zip(self.GDGPS,self.Regdict['TEC'][timenum]): # check if there's anything to plot if len(igpslist)==0: continue (sctter,scatercb) = scatterGD(igps,'alt',1.5e5,vbounds=gpsbounds,time = igpslist,gkey = 'TEC',cmap=defmap,fig=fig, ax=ax,title='',cbar=False,err=.1,m=m) gpshands.append(sctter) """ Plot Position of Mah8 y = 64.971 x = 212.567-360 xd,yd = m(x,y) gpshands.append(ax.plot(xd,yd,'rx',markersize=15)[0]) """ if('lol' in igps.data): for i in igpslist: if(igps.data['lol'][i].any()): ydata = igps.dataloc[i][0] xdata = igps.dataloc[i][1] Xdata,Ydata = m(xdata,ydata) gpshands.append(ax.plot(Xdata,Ydata,'kx',markersize=12)[0]) # If no gps data plots dont try to plot the color bar if len(gpshands)>0: scatercb = plt.colorbar(sctter,cax=cbarax[cbcur]) scatercb.set_label('vTEC in TECu') cbcur+=1 allhands[0]=gpshands titlelist.append( insertinfo('GPS $tmdy $thmsehms',posix=curwin[0],posixend=curwin[1])) #change he z order allhands[0]=gpshands if not self.GDAS is None: iop = self.Regdict['AS'][timenum] (slice3,cbar3) = slice2DGD(self.GDAS,'alt',150,optbnds,title='', time = iop,cmap='gray',gkey = 'image',fig=fig,ax=ax,cbar=False,m=m) slice3.set_norm(colors.PowerNorm(gamma=gam,vmin=optbnds[0],vmax=optbnds[1])) titlelist.append(insertinfo('All Sky $tmdy $thmsehms',posix=self.GDAS.times[iop,0],posixend=self.GDAS.times[iop,1])) cbaras = plt.colorbar(slice3,cax=cbarax[cbcur]) cbcur+=1 cbaras.set_label('All Sky Scale') minz=slice3.get_zorder() for i in reversed(allhands[0]): minz=sp.minimum(minz,i.get_zorder()) i.set_zorder(i.get_zorder()+1) slice3.set_zorder(minz) allhands.append(slice3) if not self.GDISR is None: itn=self.Regdict['ISR'][timenum] curph=self.params['paramheight'][icase] vbounds = self.params['paramlim'] iparam=curph[0] if iparam.lower()!='ne': levels = sp.logspace(sp.log10(vbounds[icase][0]),sp.log10(vbounds[icase][1]),5) else: levels = sp.linspace(vbounds[icase][0],vbounds[icase][1],5) (plth,cbh) = contourGD(self.GDISR,'alt',curph[1],vbounds=vbounds[icase],time = itn,gkey = iparam,cmap='jet',fig=fig, ax=ax,cbar=False,m=m,levels = levels) cbh = plt.colorbar(plth,cax=cbarax[cbcur]) cbh.set_label(iparam) if iparam.lower()!='ne': fmt= '%d' else: plth.set_norm(colors.LogNorm(vmin=vbounds[icase][0],vmax=vbounds[icase][1])) fmt = '%.1e' titlelist.append( insertinfo('ISR Data at $tmdy $thmsehms',posix=self.GDISR.times[itn,0],posixend = self.GDISR.times[itn,1])) # minz=plth.get_zorder() # for i in reversed(allhands[0]): # minz=sp.minimum(minz,i.get_zorder) # i.set_zorder(i.get_zorder()+1) # plth.set_zorder(minz) cbh = plt.colorbar(plth,cax=cbarax[cbcur],format=fmt) cbh.set_label(iparam) allhands.append(plth) ax.set_title('\n'.join(titlelist) ) return allhands,cbarax