mirror of
https://github.com/wassname/simpeg.git
synced 2026-06-28 23:58:09 +08:00
417 lines
16 KiB
Python
417 lines
16 KiB
Python
from matplotlib import pyplot as plt, colors, numpy as np
|
|
|
|
|
|
def rec2nd(structArray):
|
|
""" Converts a structured/record array to ndarray to do operations on."""
|
|
return structArray.view((np.float,len(structArray.dtype.names)))
|
|
|
|
def plotIsoFreqNSimpedance(ax,freq,array,flag,par='abs',colorbar=True,colorNorm='SymLog',cLevel=True,contour=True):
|
|
|
|
indUniFreq = np.where(freq==array['freq'])
|
|
|
|
|
|
x, y = array['x'][indUniFreq],array['y'][indUniFreq]
|
|
if par == 'abs':
|
|
zPlot = np.abs(array[flag][indUniFreq])
|
|
cmap = plt.get_cmap('OrRd_r')#seismic')
|
|
level = np.logspace(0,-5,31)
|
|
clevel = np.logspace(0,-4,5)
|
|
plotNorm = colors.LogNorm()
|
|
elif par == 'real':
|
|
zPlot = np.real(array[flag][indUniFreq])
|
|
cmap = plt.get_cmap('RdYlBu')
|
|
if cLevel:
|
|
level = np.concatenate((-np.logspace(0,-10,31),np.logspace(-10,0,31)))
|
|
clevel = np.concatenate((-np.logspace(0,-8,5),np.logspace(-8,0,5)))
|
|
else:
|
|
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
|
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
|
if colorNorm=='SymLog':
|
|
plotNorm = colors.SymLogNorm(1e-10,linscale=2)
|
|
else:
|
|
plotNorm = colors.Normalize()
|
|
elif par == 'imag':
|
|
zPlot = np.imag(array[flag][indUniFreq])
|
|
cmap = plt.get_cmap('RdYlBu')
|
|
level = np.concatenate((-np.logspace(0,-10,31),np.logspace(-10,0,31)))
|
|
clevel = np.concatenate((-np.logspace(0,-8,5),np.logspace(-8,0,5)))
|
|
plotNorm = colors.SymLogNorm(1e-10,linscale=2)
|
|
if cLevel:
|
|
level = np.concatenate((-np.logspace(0,-10,31),np.logspace(-10,0,31)))
|
|
clevel = np.concatenate((-np.logspace(0,-8,5),np.logspace(-8,0,5)))
|
|
else:
|
|
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
|
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
|
if colorNorm=='SymLog':
|
|
plotNorm = colors.SymLogNorm(1e-10,linscale=2)
|
|
elif colorNorm=='Lin':
|
|
plotNorm = colors.Normalize()
|
|
if contour:
|
|
cs = ax.tricontourf(x,y,zPlot,levels=level,cmap=cmap,norm=plotNorm)#,extend='both')
|
|
else:
|
|
uniX,uniY = np.unique(x),np.unique(y)
|
|
X,Y = np.meshgrid(np.append(uniX-25,uniX[-1]+25),np.append(uniY-25,uniY[-1]+25))
|
|
cs = ax.pcolor(X,Y,np.reshape(zPlot,(len(uniY),len(uniX))),cmap=cmap,norm=plotNorm)
|
|
if colorbar:
|
|
plt.colorbar(cs,cax=ax.cax,ticks=clevel,format='%1.2e')
|
|
ax.set_title(flag+' '+par,fontsize=8)
|
|
return cs
|
|
|
|
def plotIsoFreqNSDiff(ax,freq,arrayList,flag,par='abs',colorbar=True,cLevel=True,mask=None,contourLine=True,useLog=False):
|
|
|
|
indUniFreq0 = np.where(freq==arrayList[0]['freq'])
|
|
indUniFreq1 = np.where(freq==arrayList[1]['freq'])
|
|
seicmap = plt.get_cmap('RdYlBu')#seismic')
|
|
x, y = arrayList[0]['x'][indUniFreq0],arrayList[0]['y'][indUniFreq0]
|
|
if par == 'abs':
|
|
if useLog:
|
|
zPlot = (np.log10(np.abs(arrayList[0][flag][indUniFreq0])) - np.log10(np.abs(arrayList[1][flag][indUniFreq1])))/np.log10(np.abs(arrayList[1][flag][indUniFreq1]))
|
|
else:
|
|
zPlot = (np.abs(arrayList[0][flag][indUniFreq0]) - np.abs(arrayList[1][flag][indUniFreq1]))/np.abs(arrayList[1][flag][indUniFreq1])
|
|
if mask:
|
|
maskInd = np.logical_or(np.abs(arrayList[0][flag][indUniFreq0])< 1e-3,np.abs(arrayList[1][flag][indUniFreq1]) < 1e-3)
|
|
zPlot = np.ma.array(zPlot)
|
|
zPlot[maskInd] = mask
|
|
if cLevel:
|
|
level = np.arange(-200,201,10)
|
|
clevel = np.arange(-200,201,25)
|
|
else:
|
|
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
|
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
|
elif par == 'real':
|
|
if useLog:
|
|
zPlot = (np.log10(np.real(arrayList[0][flag][indUniFreq0])) -np.log10(np.real(arrayList[1][flag][indUniFreq1])))/np.log10(np.abs((np.real(arrayList[1][flag][indUniFreq1]))))
|
|
else:
|
|
zPlot = (np.real(arrayList[0][flag][indUniFreq0]) -np.real(arrayList[1][flag][indUniFreq1]))/np.abs((np.real(arrayList[1][flag][indUniFreq1])))
|
|
if mask:
|
|
maskInd = np.logical_or(np.abs(np.real(arrayList[0][flag][indUniFreq0])) < 1e-3,np.abs(np.real(arrayList[1][flag][indUniFreq1])) < 1e-3)
|
|
zPlot = np.ma.array(zPlot)
|
|
zPlot[maskInd] = mask
|
|
if cLevel:
|
|
level = np.arange(-200,201,10)
|
|
clevel = np.arange(-200,201,25)
|
|
else:
|
|
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
|
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
|
elif par == 'imag':
|
|
if useLog:
|
|
zPlot = (np.log10(np.imag(arrayList[0][flag][indUniFreq0])) -np.log10(np.imag(arrayList[1][flag][indUniFreq1])))/np.log10(np.abs((np.imag(arrayList[1][flag][indUniFreq1]))))
|
|
else:
|
|
zPlot = (np.imag(arrayList[0][flag][indUniFreq0]) -np.imag(arrayList[1][flag][indUniFreq1]))/np.abs((np.imag(arrayList[1][flag][indUniFreq1])))
|
|
if mask:
|
|
maskInd = np.logical_or(np.abs(np.imag(arrayList[0][flag][indUniFreq0])) < 1e-3,np.abs(np.imag(arrayList[1][flag][indUniFreq1])) < 1e-3)
|
|
zPlot = np.ma.array(zPlot)
|
|
zPlot[maskInd] = mask
|
|
if cLevel:
|
|
level = np.arange(-200,201,10)
|
|
clevel = np.arange(-200,201,25)
|
|
else:
|
|
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
|
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
|
cs = ax.tricontourf(x,y,zPlot*100,levels=level*100,cmap=seicmap,extend='both') #,norm=colors.SymLogNorm(1e-2,linscale=2))
|
|
if contourLine:
|
|
csl = ax.tricontour(x,y,zPlot*100,levels=clevel*100,colors='k')
|
|
plt.clabel(csl, fontsize=7, inline=1,fmt='%1.1e',inline_spacing=10)
|
|
if colorbar:
|
|
cb = plt.colorbar(cs,cax=ax.cax,ticks=clevel*100,format='%1.1e')
|
|
for t in cb.ax.get_yticklabels():
|
|
t.set_rotation(60)
|
|
t.set_fontsize(8)
|
|
|
|
ax.set_title(flag+' '+par,fontsize=8)
|
|
|
|
def plotIsoFreqNStipper(ax,freq,array,flag,par='abs',colorbar=True,colorNorm='SymLog',cLevel=True,contour=True):
|
|
|
|
indUniFreq = np.where(freq==array['freq'])
|
|
|
|
x, y = array['x'][indUniFreq],array['y'][indUniFreq]
|
|
if par == 'abs':
|
|
cmap = plt.get_cmap('OrRd_r')#seismic')
|
|
zPlot = np.abs(array[flag][indUniFreq])
|
|
if cLevel:
|
|
level = np.logspace(-4,0,33)
|
|
clevel = np.logspace(-4,0,5)
|
|
else:
|
|
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
|
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
|
if colorNorm=='SymLog':
|
|
plotNorm = colors.LogNorm()
|
|
else:
|
|
plotNorm = colors.Normalize()
|
|
elif par == 'real':
|
|
cmap = plt.get_cmap('RdYlBu')
|
|
zPlot = np.real(array[flag][indUniFreq])
|
|
if cLevel:
|
|
level = np.concatenate((-np.logspace(0,-4,33),np.logspace(-4,0,33)))
|
|
clevel = np.concatenate((-np.logspace(0,-4,5),np.logspace(-4,0,5)))
|
|
else:
|
|
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
|
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
|
if colorNorm=='SymLog':
|
|
plotNorm = colors.SymLogNorm(1e-4,linscale=2)
|
|
else:
|
|
plotNorm = colors.Normalize()
|
|
elif par == 'imag':
|
|
cmap = plt.get_cmap('RdYlBu')
|
|
zPlot = np.imag(array[flag][indUniFreq])
|
|
if cLevel:
|
|
level = np.concatenate((-np.logspace(0,-4,33),np.logspace(-4,0,33)))
|
|
clevel = np.concatenate((-np.logspace(0,-4,5),np.logspace(-4,0,5)))
|
|
else:
|
|
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
|
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
|
if colorNorm=='SymLog':
|
|
plotNorm = colors.SymLogNorm(1e-4,linscale=2)
|
|
else:
|
|
plotNorm = colors.Normalize()
|
|
if contour:
|
|
cs = ax.tricontourf(x,y,zPlot,levels=level,cmap=cmap,norm=plotNorm)#,extend='both')
|
|
else:
|
|
uniX,uniY = np.unique(x),np.unique(y)
|
|
X,Y = np.meshgrid(np.append(uniX-25,uniX[-1]+25),np.append(uniY-25,uniY[-1]+25))
|
|
cs = ax.pcolor(X,Y,np.reshape(zPlot,(len(uniY),len(uniX))),levels=level,cmap=cmap,norm=plotNorm,edgecolors='k', linewidths=0.5)
|
|
if colorbar:
|
|
plt.colorbar(cs,cax=ax.cax,ticks=clevel,format='%1.2e')
|
|
ax.set_title(flag+' '+par,fontsize=8)
|
|
|
|
def plotIsoStaImpedance(ax,loc,array,flag,par='abs',pSym='s',pColor=None):
|
|
|
|
appResFact = 1/(8*np.pi**2*10**(-7))
|
|
treshold = 1.0 # 1 meter
|
|
indUniSta = np.sqrt(np.sum((rec2nd(array[['x','y']])-loc)**2,axis=1)) < treshold
|
|
freq = array['freq'][indUniSta]
|
|
|
|
if par == 'abs':
|
|
zPlot = np.abs(array[flag][indUniSta])
|
|
elif par == 'real':
|
|
zPlot = np.real(array[flag][indUniSta])
|
|
elif par == 'imag':
|
|
zPlot = np.imag(array[flag][indUniSta])
|
|
elif par == 'res':
|
|
zPlot = (appResFact/freq)*np.abs(array[flag][indUniSta])**2
|
|
elif par == 'phs':
|
|
zPlot = np.arctan2(array[flag][indUniSta].imag,array[flag][indUniSta].real)*(180/np.pi)
|
|
|
|
if not pColor:
|
|
if 'xx' in flag:
|
|
lab = 'XX'
|
|
pColor = 'g'
|
|
elif 'xy' in flag:
|
|
lab = 'XY'
|
|
pColor = 'r'
|
|
elif 'yx' in flag:
|
|
lab = 'YX'
|
|
pColor = 'b'
|
|
elif 'yy' in flag:
|
|
lab = 'YY'
|
|
pColor = 'y'
|
|
|
|
ax.plot(freq,zPlot,color=pColor,marker=pSym,label=flag)
|
|
|
|
|
|
def plotPsudoSectNSimpedance(ax,sectDict,array,flag,par='abs',colorbar=True,colorNorm='None',cLevel=None,contour=True):
|
|
|
|
indSect = np.where(sectDict.values()[0]==array[sectDict.keys()[0]])
|
|
|
|
# Define the plot axes
|
|
if 'x' in sectDict.keys()[0]:
|
|
x = array['y'][indSect]
|
|
else:
|
|
x = array['x'][indSect]
|
|
y = array['freq'][indSect]
|
|
|
|
if par == 'abs':
|
|
zPlot = np.abs(array[flag][indSect])
|
|
cmap = plt.get_cmap('OrRd_r')#seismic')
|
|
if cLevel:
|
|
level = np.logspace(0,-5,31,endpoint=True)
|
|
clevel = np.logspace(0,-4,5,endpoint=True)
|
|
else:
|
|
level = np.linspace(zPlot.min(),zPlot.max(),100,endpoint=True)
|
|
clevel = np.linspace(zPlot.min(),zPlot.max(),10,endpoint=True)
|
|
|
|
elif par == 'ares':
|
|
zPlot = np.abs(array[flag][indSect])**2/(8*np.pi**2*10**(-7)*array['freq'][indSect])
|
|
cmap = plt.get_cmap('RdYlBu')#seismic)
|
|
if cLevel:
|
|
zMax = np.log10(cLevel[1])
|
|
zMin = np.log10(cLevel[0])
|
|
else:
|
|
zMax = (np.ceil(np.log10(np.abs(zPlot).max())))
|
|
zMin = (np.floor(np.log10(np.abs(zPlot).min())))
|
|
level = np.logspace(zMin,zMax,(zMax-zMin)*8+1,endpoint=True)
|
|
clevel = np.logspace(zMin,zMax,(zMax-zMin)*2+1,endpoint=True)
|
|
plotNorm = colors.LogNorm()
|
|
|
|
elif par == 'aphs':
|
|
zPlot = np.arctan2(array[flag][indSect].imag,array[flag][indSect].real)*(180/np.pi)
|
|
cmap = plt.get_cmap('RdYlBu')#seismic)
|
|
if cLevel:
|
|
zMax = cLevel[1]
|
|
zMin = cLevel[0]
|
|
else:
|
|
zMax = (np.ceil(zPlot).max())
|
|
zMin = (np.floor(zPlot).min())
|
|
level = np.arange(zMin,zMax+.1,1)
|
|
clevel = np.arange(zMin,zMax+.1,10)
|
|
plotNorm = colors.Normalize()
|
|
|
|
elif par == 'real':
|
|
zPlot = np.real(array[flag][indSect])
|
|
cmap = plt.get_cmap('Spectral') #('RdYlBu')
|
|
if cLevel:
|
|
zMax = np.log10(cLevel[1])
|
|
zMin = np.log10(cLevel[0])
|
|
else:
|
|
zMax = (np.ceil(np.log10(np.abs(zPlot).max())))
|
|
zMin = (np.floor(np.log10(np.abs(zPlot).min())))
|
|
level = np.concatenate((-np.logspace(zMax,zMin-.125,(zMax-zMin)*8+1,endpoint=True),np.logspace(zMin-.125,zMax,(zMax-zMin)*8+1,endpoint=True)))
|
|
clevel = np.concatenate((-np.logspace(zMax,zMin,(zMax-zMin)*1+1,endpoint=True),np.logspace(zMin,zMax,(zMax-zMin)*1+1,endpoint=True)))
|
|
plotNorm = colors.SymLogNorm(np.abs(level).min(),linscale=0.1)
|
|
elif par == 'imag':
|
|
zPlot = np.imag(array[flag][indSect])
|
|
cmap = plt.get_cmap('Spectral') #('RdYlBu')
|
|
|
|
if cLevel:
|
|
zMax = np.log10(cLevel[1])
|
|
zMin = np.log10(cLevel[0])
|
|
else:
|
|
zMax = (np.ceil(np.log10(np.abs(zPlot).max())))
|
|
zMin = (np.floor(np.log10(np.abs(zPlot).min())))
|
|
level = np.concatenate((-np.logspace(zMax,zMin-.125,(zMax-zMin)*8+1,endpoint=True),np.logspace(zMin-.125,zMax,(zMax-zMin)*8+1,endpoint=True)))
|
|
clevel = np.concatenate((-np.logspace(zMax,zMin,(zMax-zMin)*1+1,endpoint=True),np.logspace(zMin,zMax,(zMax-zMin)*1+1,endpoint=True)))
|
|
plotNorm = colors.SymLogNorm(np.abs(level).min(),linscale=0.1)
|
|
|
|
if colorNorm=='SymLog':
|
|
plotNorm = colors.SymLogNorm(np.abs(level).min(),linscale=0.1)
|
|
elif colorNorm=='Lin':
|
|
plotNorm = colors.Normalize()
|
|
elif colorNorm=='Log':
|
|
plotNorm = colors.LogNorm()
|
|
if contour:
|
|
cs = ax.tricontourf(x,y,zPlot,levels=level,cmap=cmap,norm=plotNorm)#,extend='both')
|
|
else:
|
|
uniX,uniY = np.unique(x),np.unique(y)
|
|
X,Y = np.meshgrid(np.append(uniX-25,uniX[-1]+25),np.append(uniY-25,uniY[-1]+25))
|
|
cs = ax.pcolor(X,Y,np.reshape(zPlot,(len(uniY),len(uniX))),cmap=cmap,norm=plotNorm)
|
|
if colorbar:
|
|
csB = plt.colorbar(cs,cax=ax.cax,ticks=clevel,format='%1.2e')
|
|
# csB.on_mappable_changed(cs)
|
|
ax.set_title(flag+' '+par,fontsize=8)
|
|
return cs, csB
|
|
return cs,None
|
|
|
|
|
|
def plotPsudoSectNSDiff(ax,sectDict,arrayList,flag,par='abs',colorbar=True,colorNorm='SymLog',cLevel=None,contour=True,mask=None,useLog=False):
|
|
|
|
def sortInArr(arr):
|
|
return np.sort(arr,order=['freq','x','y','z'])
|
|
# Find the index for the slice
|
|
indSect0 = np.where(sectDict.values()[0]==arrayList[0][sectDict.keys()[0]])
|
|
indSect1 = np.where(sectDict.values()[0]==arrayList[1][sectDict.keys()[0]])
|
|
# Extract and sort the mats
|
|
arr0 = sortInArr(arrayList[0][indSect0])
|
|
arr1 = sortInArr(arrayList[1][indSect1])
|
|
|
|
# Define the plot axes
|
|
if 'x' in sectDict.keys()[0]:
|
|
x0 = arr0['y']
|
|
x1 = arr1['y']
|
|
else:
|
|
x0 = arr0['x']
|
|
x1 = arr1['x']
|
|
y0 = arr0['freq']
|
|
y1 = arr1['freq']
|
|
|
|
|
|
if par == 'abs':
|
|
if useLog:
|
|
zPlot = (np.log10(np.abs(arr0[flag])) - np.log10(np.abs(arr1[flag])))/np.log10(np.abs(arr1[flag]))
|
|
else:
|
|
zPlot = (np.abs(arr0[flag]) - np.abs(arr1[flag]))/np.abs(arr1[flag])
|
|
if mask:
|
|
maskInd = np.logical_or(np.abs(arr0[flag])< 1e-3,np.abs(arr1[flag]) < 1e-3)
|
|
zPlot = np.ma.array(zPlot)
|
|
zPlot[maskInd] = mask
|
|
cmap = plt.get_cmap('RdYlBu')#seismic)
|
|
elif par == 'ares':
|
|
arF = 1/(8*np.pi**2*10**(-7))
|
|
if useLog:
|
|
zPlot = (np.log10((arF/arr0['freq'])*np.abs(arr0[flag])**2) - np.log10((arF/arr1['freq'])*np.abs(arr1[flag])**2))/np.log10((arF/arr1['freq'])*np.abs(arr1[flag])**2)
|
|
else:
|
|
zPlot = ((arF/arr0['freq'])*np.abs(arr0[flag])**2 - (arF/arr1['freq'])*np.abs(arr1[flag])**2)/((arF/arr1['freq'])*np.abs(arr1[flag])**2)
|
|
if mask:
|
|
maskInd = np.logical_or(np.abs(arr0[flag])< 1e-3,np.abs(arr1[flag]) < 1e-3)
|
|
zPlot = np.ma.array(zPlot)
|
|
zPlot[maskInd] = mask
|
|
cmap = plt.get_cmap('Spectral')#seismic)
|
|
|
|
elif par == 'aphs':
|
|
if useLog:
|
|
zPlot = (np.log10(np.arctan2(arr0[flag].imag,arr0[flag].real)*(180/np.pi)) - np.log10(np.arctan2(arr1[flag].imag,arr1[flag].real)*(180/np.pi)) )/np.log10(np.arctan2(arr1[flag].imag,arr1[flag].real)*(180/np.pi))
|
|
else:
|
|
zPlot = ( np.arctan2(arr0[flag].imag,arr0[flag].real)*(180/np.pi) - np.arctan2(arr1[flag].imag,arr1[flag].real)*(180/np.pi) )/(np.arctan2(arr1[flag].imag,arr1[flag].real)*(180/np.pi))
|
|
if mask:
|
|
maskInd = np.logical_or(np.abs(arr0[flag])< 1e-3,np.abs(arr1[flag]) < 1e-3)
|
|
zPlot = np.ma.array(zPlot)
|
|
zPlot[maskInd] = mask
|
|
cmap = plt.get_cmap('Spectral')#seismic)
|
|
elif par == 'real':
|
|
if useLog:
|
|
zPlot = (np.log10(arr0[flag].real) - np.log10(arr1[flag].real))/np.log10(arr1[flag].real)
|
|
else:
|
|
zPlot = (arr0[flag].real - arr1[flag].real)/arr1[flag].real
|
|
if mask:
|
|
maskInd = np.logical_or(arr0[flag].real< 1e-3,arr1[flag].real < 1e-3)
|
|
zPlot = np.ma.array(zPlot)
|
|
zPlot[maskInd] = mask
|
|
cmap = plt.get_cmap('Spectral') #('Spectral')
|
|
|
|
elif par == 'imag':
|
|
if useLog:
|
|
zPlot = (np.log10(arr0[flag].imag) - np.log10(arr1[flag].imag))/np.log10(arr1[flag].imag)
|
|
else:
|
|
zPlot = (arr0[flag].imag - arr1[flag].imag)/arr1[flag].imag
|
|
if mask:
|
|
maskInd = np.logical_or(arr0[flag].imag< 1e-3,arr1[flag].imag < 1e-3)
|
|
zPlot = np.ma.array(zPlot)
|
|
zPlot[maskInd] = mask
|
|
cmap = plt.get_cmap('Spectral') #('RdYlBu')
|
|
|
|
if cLevel:
|
|
zMax = np.log10(cLevel[1])
|
|
zMin = np.log10(cLevel[0])
|
|
else:
|
|
zMax = (np.ceil(np.log10(np.abs(zPlot).max())))
|
|
zMin = (np.floor(np.log10(np.abs(zPlot).min())))
|
|
|
|
|
|
if colorNorm=='SymLog':
|
|
level = np.concatenate((-np.logspace(zMax,zMin-.125,(zMax-zMin)*8+1,endpoint=True),np.logspace(zMin-.125,zMax,(zMax-zMin)*8+1,endpoint=True)))
|
|
clevel = np.concatenate((-np.logspace(zMax,zMin,(zMax-zMin)*1+1,endpoint=True),np.logspace(zMin,zMax,(zMax-zMin)*1+1,endpoint=True)))
|
|
plotNorm = colors.SymLogNorm(np.abs(level).min(),linscale=0.1)
|
|
elif colorNorm=='Lin':
|
|
if cLevel:
|
|
level = np.arange(cLevel[0],cLevel[1]+.1,(cLevel[1] - cLevel[0])/50.)
|
|
clevel = np.arange(cLevel[0],cLevel[1]+.1,(cLevel[1] - cLevel[0])/10.)
|
|
else:
|
|
level = np.arange(zPlot.min(),zPlot.max(),(zPlot.max() - zPlot.min())/50.)
|
|
clevel = np.arange(zPlot.min(),zPlot.max(),(zPlot.max() - zPlot.min())/10.)
|
|
plotNorm = colors.Normalize()
|
|
elif colorNorm=='Log':
|
|
level = np.logspace(zMin-.125,zMax,(zMax-zMin)*8+1,endpoint=True)
|
|
clevel = np.logspace(zMin,zMax,(zMax-zMin)*2+1,endpoint=True)
|
|
plotNorm = colors.LogNorm()
|
|
if contour:
|
|
cs = ax.tricontourf(x0,y0,zPlot*100,levels=level*100,cmap=cmap,norm=plotNorm,extend='both')#,extend='both')
|
|
else:
|
|
uniX,uniY = np.unique(x0),np.unique(y0)
|
|
X,Y = np.meshgrid(np.append(uniX-25,uniX[-1]+25),np.append(uniY-25,uniY[-1]+25))
|
|
cs = ax.pcolor(X,Y,np.reshape(zPlot,(len(uniY),len(uniX))),cmap=cmap,norm=plotNorm)
|
|
if colorbar:
|
|
csB = plt.colorbar(cs,cax=ax.cax,ticks=clevel*100,format='%1.2e')
|
|
# csB.on_mappable_changed(cs)
|
|
ax.set_title(flag+' '+par + ' diff',fontsize=8)
|
|
return cs, csB
|
|
return cs,None
|