def _generate_colorbar_ticks_label(data_transform=False, colorbarlabel=None, trans_base_list=None, forcelabel=None, plotlev=None, plotlab=None): ''' Return (colorbar_ticks,colorbar_labels) ''' #data_transform==True and levels!=None if data_transform == True: if colorbarlabel != None: colorbarlabel = pb.iteflat(colorbarlabel) transformed_colorbarlabel_ticks,x,y,trans_base_list = \ mathex.plot_array_transg(colorbarlabel, trans_base_list, copy=True) #Note if/else blocks are organized in 1st tire by check if the two #ends are -inf/inf and 2nd tire by check if colorbarlabel is None if np.isneginf(plotlab[0]) and np.isposinf(plotlab[-1]): if colorbarlabel != None: ftuple = (transformed_colorbarlabel_ticks, colorbarlabel) else: ftuple = (plotlev, plotlab[1:-1]) elif np.isneginf(plotlab[0]) or np.isposinf(plotlab[-1]): raise ValueError("It's strange to set only side as infitive") else: if colorbarlabel != None: ftuple = (transformed_colorbarlabel_ticks, colorbarlabel) else: ftuple = (plotlev, plotlab) #data_transform==False else: if np.isneginf(plotlab[0]) and np.isposinf(plotlab[-1]): #if colorbarlabel is forced, then ticks and ticklabels will be forced. if colorbarlabel != None: ftuple = (colorbarlabel, colorbarlabel) #This by default will be done, it's maintained here only for clarity. else: ftuple = (plotlab[1:-1], plotlab[1:-1]) elif np.isneginf(plotlab[0]) or np.isposinf(plotlab[-1]): raise ValueError("It's strange to set only side as infitive") else: if colorbarlabel != None: ftuple = (colorbarlabel, colorbarlabel) else: ftuple = (plotlab, plotlab) ftuple = list(ftuple) if forcelabel != None: if len(forcelabel) != len(ftuple[1]): raise ValueError('''the length of the forcelabel and the length of labeled ticks is not equal!''') else: ftuple[1] = forcelabel return ftuple
def _generate_colorbar_ticks_label( data_transform=False, colorbarlabel=None, trans_base_list=None, forcelabel=None, plotlev=None, plotlab=None ): """ Return (colorbar_ticks,colorbar_labels) """ # data_transform==True and levels!=None if data_transform == True: if colorbarlabel != None: colorbarlabel = pb.iteflat(colorbarlabel) transformed_colorbarlabel_ticks, x, y, trans_base_list = mathex.plot_array_transg( colorbarlabel, trans_base_list, copy=True ) # Note if/else blocks are organized in 1st tire by check if the two # ends are -inf/inf and 2nd tire by check if colorbarlabel is None if np.isneginf(plotlab[0]) and np.isposinf(plotlab[-1]): if colorbarlabel != None: ftuple = (transformed_colorbarlabel_ticks, colorbarlabel) else: ftuple = (plotlev, plotlab[1:-1]) elif np.isneginf(plotlab[0]) or np.isposinf(plotlab[-1]): raise ValueError("It's strange to set only side as infitive") else: if colorbarlabel != None: ftuple = (transformed_colorbarlabel_ticks, colorbarlabel) else: ftuple = (plotlev, plotlab) # data_transform==False else: if np.isneginf(plotlab[0]) and np.isposinf(plotlab[-1]): # if colorbarlabel is forced, then ticks and ticklabels will be forced. if colorbarlabel != None: ftuple = (colorbarlabel, colorbarlabel) # This by default will be done, it's maintained here only for clarity. else: ftuple = (plotlab[1:-1], plotlab[1:-1]) elif np.isneginf(plotlab[0]) or np.isposinf(plotlab[-1]): raise ValueError("It's strange to set only side as infitive") else: if colorbarlabel != None: ftuple = (colorbarlabel, colorbarlabel) else: ftuple = (plotlab, plotlab) ftuple = list(ftuple) if forcelabel != None: if len(forcelabel) != len(ftuple[1]): raise ValueError( """the length of the forcelabel and the length of labeled ticks is not equal!""" ) else: ftuple[1] = forcelabel return ftuple
def _transform_data(pdata, levels, data_transform): """ Return [pdata,plotlev,plotlab,extend,trans_base_list]; if data_transform == False, trans_base_list = None. Notes: ------ pdata: data used for contourf plotting. plotlev: the levels used in contourf plotting. extend: the value for parameter extand in contourf. trans_base_list: cf. mathex.plot_array_transg """ if levels == None: ftuple = (pdata, None, None, "neither") if data_transform == True: raise Warning("Strange levels is None but data_transform is True") else: if data_transform == True: # make the data transform before plotting. pdata_trans, plotlev, plotlab, trans_base_list = mathex.plot_array_transg(pdata, levels, copy=True) if np.isneginf(plotlab[0]) and np.isposinf(plotlab[-1]): ftuple = (pdata_trans, plotlev[1:-1], plotlab, "both") elif np.isneginf(plotlab[0]) or np.isposinf(plotlab[-1]): raise ValueError( """only one extreme set as infinitive, please set both as infinitive if arrow colorbar is wanted.""" ) else: ftuple = (pdata_trans, plotlev, plotlab, "neither") # data_transform==False else: plotlev = pb.iteflat(levels) plotlab = pb.iteflat(levels) if np.isneginf(plotlab[0]) and np.isposinf(plotlab[-1]): # here the levels would be like [np.NINF,1,2,3,np.PINF] # in following contourf, all values <1 and all values>3 will be # automatically plotted in the color of two arrows. # easy to see in this example: # a=np.tile(np.arange(10),10).reshape(10,10); # fig,ax=g.Create_1Axes(); # cs=ax.contourf(a,levels=np.arange(2,7),extend='both'); # plt.colorbar(cs) ftuple = (pdata, plotlev[1:-1], plotlab, "both") elif np.isneginf(plotlab[0]) or np.isposinf(plotlab[-1]): raise ValueError( """only one extreme set as infinitive, please set both as infinitive if arrow colorbar is wanted.""" ) else: ftuple = (pdata, plotlev, plotlab, "neither") datalist = list(ftuple) if data_transform == True: datalist.append(trans_base_list) else: datalist.append(None) return datalist
def _transform_data(pdata, levels, data_transform, extend='neither'): ''' Return [pdata,plotlev,plotlab,extend,trans_base_list]; if data_transform == False, trans_base_list = None. Notes: ------ pdata: data used for contourf plotting. plotlev: the levels used in contourf plotting. extend: the value for parameter extand in contourf. trans_base_list: cf. mathex.plot_array_transg ''' if levels is None: ftuple = (pdata, None, None, extend) if data_transform == True: raise Warning("Strange levels is None but data_transform is True") #level is given else: if data_transform == True: #make the data transform before plotting. pdata_trans,plotlev,plotlab,trans_base_list = \ mathex.plot_array_transg(pdata, levels, copy=True) if np.isneginf(plotlab[0]) and np.isposinf(plotlab[-1]): ftuple = (pdata_trans, plotlev[1:-1], plotlab, 'both') elif np.isneginf(plotlab[0]) or np.isposinf(plotlab[-1]): raise ValueError('''only one extreme set as infinitive, please set both as infinitive if arrow colorbar is wanted.''') else: ftuple = (pdata_trans, plotlev, plotlab, extend) #data_transform==False else: plotlev = pb.iteflat(levels) plotlab = plotlev #label same as levels if np.isneginf(plotlab[0]) and np.isposinf(plotlab[-1]): #here the levels would be like [np.NINF,1,2,3,np.PINF] #in following contourf, all values <1 and all values>3 will be #automatically plotted in the color of two arrows. #easy to see in this example: #a=np.tile(np.arange(10),10).reshape(10,10); #fig,ax=g.Create_1Axes(); #cs=ax.contourf(a,levels=np.arange(2,7),extend='both'); #plt.colorbar(cs) ftuple = (pdata, plotlev[1:-1], plotlab, 'both') elif np.isneginf(plotlab[0]) or np.isposinf(plotlab[-1]): raise ValueError('''only one extreme set as infinitive, please set both as infinitive if arrow colorbar is wanted.''') else: ftuple = (pdata, plotlev, plotlab, extend) datalist = list(ftuple) if data_transform == True: datalist.append(trans_base_list) else: datalist.append(None) return datalist