##// END OF EJS Templates
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.

File last commit:

r167:87539073aeee
r167:87539073aeee
Show More
BaseGraph_mpl.py
882 lines | 21.9 KiB | text/x-python | PythonLexer
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 '''
Created on Feb 7, 2012
@autor $Author: dsuarez $
@version $Id: BaseGraph.py 117 2012-09-04 21:16:59Z dsuarez $
'''
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 import numpy
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 import time
import datetime
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 import matplotlib as mpl
Alexander Valdez
Regresa a la version original desarrollada por Marco M.
r165 mpl.use('TKAgg')
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 import matplotlib.pyplot as plt
Alexander Valdez
Regresa a la version original desarrollada por Marco M.
r165 import scitools.numpyutils as sn
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146
def cmap1_init(colormap='gray'):
pass
def setColormap(colormap='jet'):
pass
def savePlplot(filename,width,height):
pass
def initMatplotlib(indexFig,ncol,nrow,winTitle,width,height):
plt.ioff()
fig = plt.figure(indexFig)
fig.canvas.manager.set_window_title(winTitle)
fig.canvas.manager.resize(width,height)
# fig.add_subplot(nrow,ncol,1)
plt.ion()
def setNewPage():
plt.clf()
def closePage():
pass
def clearData(objGraph):
objGraph.plotBox(objGraph.xrange[0], objGraph.xrange[1], objGraph.yrange[0], objGraph.yrange[1], 'bc', 'bc')
objGraph.setColor(15) #Setting Line Color to White
if objGraph.datatype == 'complex':
objGraph.basicXYPlot(objGraph.xdata,objGraph.ydata.real)
objGraph.basicXYPlot(objGraph.xdata,objGraph.ydata.imag)
if objGraph.datatype == 'real':
objGraph.basicXYPlot(objGraph.xdata,objGraph.ydata)
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 objGraph.setColor(1)
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146
def setFigure(indexFig):
plt.figure(indexFig)
def refresh():
plt.draw()
def show():
plt.ioff()
plt.show()
plt.ion()
def setPlTitle(pltitle,color, szchar=0.7):
pass
def setSubpages(ncol,nrow):
pass
class BaseGraph:
__name = None
__xpos = None
__ypos = None
__subplot = None
__xg = None
__yg = None
__axesId = None
xdata = None
ydata = None
getGrid = True
xaxisIsTime = False
deltax = None
xmin = None
xmax = None
def __init__(self,name,subplot,xpos,ypos,xlabel,ylabel,title,szchar,xrange,yrange,zrange=None,deltax=1.0):
self.setName(name)
self.setScreenPos(xpos, ypos)
self.setSubPlot(subplot)
self.setXYZrange(xrange,yrange,zrange)
self.setSizeOfChar(szchar)
self.setLabels(xlabel,ylabel,title)
self.getGrid = True
self.xaxisIsTime = False
self.deltax = deltax
pass
def makeAxes(self,indexFig,nrow,ncol,subplot):
fig = plt.figure(indexFig)
self.__axesId = fig.add_subplot(nrow,ncol,subplot)
def setParentAxesId(self,parent):
self.__axesId = parent.__axesId
def setName(self, name):
self.__name = name
def setScreenPos(self,xpos,ypos):
self.__xpos = xpos
self.__ypos = ypos
def setSubPlot(self,subplot):
self.__subplot = subplot
def setXYZrange(self,xrange,yrange,zrange):
self.xrange = xrange
self.yrange = yrange
self.zrange = zrange
def setSizeOfChar(self,szchar):
self.__szchar = szchar
def setLabels(self,xlabel=None,ylabel=None,title=None):
if xlabel != None: self.xlabel = xlabel
if ylabel != None: self.ylabel = ylabel
if title != None: self.title = title
def setXYData(self,xdata=None,ydata=None,datatype='real'):
if ((xdata != None) and (ydata != None)):
self.xdata = xdata
self.ydata = ydata
self.datatype = datatype
if ((self.xdata == None) and (self.ydata == None)):
return None
return 1
def setLineStyle(self, style):
pass
def setColor(self, color):
pass
def setXAxisAsTime(self, value=False):
self.xaxisIsTime = value
def basicLineTimePlot(self, x, y, colline=1):
ax = self.__axesId
if self.setXYData() == None:
ax.plot(x,y)
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 plt.tight_layout()
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 else:
ax.lines[0].set_data(x,y)
def basicXYPlot(self, x, y):
ax = self.__axesId
if self.setXYData() == None:
ax.plot(x,y)
else:
ax.lines[0].set_data(x,y)
def basicPcolorPlot(self, data, x, y, xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None):
pass
def __getBoxpltr(self, x, y, deltax=None, deltay=None):
pass
def advPcolorPlot(self, data, x, y, xmin=None, xmax=None, ymin=None, ymax=None, zmin=0., zmax=0., deltax=1.0, deltay=None, getGrid = True):
ax = self.__axesId
ax.pcolormesh(x,y,data.T,vmin=zmin,vmax=zmax)
def colorbarPlot(self, xmin=0., xmax=1., ymin=0., ymax=1.):
ax = self.__axesId
cax, kw = mpl.colorbar.make_axes(ax)
norm = mpl.colors.Normalize(vmin=ymin, vmax=ymax)
cb = mpl.colorbar.ColorbarBase(cax,norm=norm,**kw)
self.__colorbarId = cb
cb.set_label(self.title)
def plotBox(self, xmin, xmax, ymin, ymax, xopt, yopt, nolabels=False):
ax = self.__axesId
ax.set_xlim([xmin,xmax])
ax.set_ylim([ymin,ymax])
if not(nolabels):
ax.set_xlabel(self.xlabel)
ax.set_ylabel(self.ylabel)
ax.set_title(self.title)
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 def delLabels(self):
pass
def plotImage(self,x,y,z,xrange,yrange,zrange):
pass
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167
class LinearPlot():
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 linearObjDic = {}
__xpos = None
__ypos = None
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 isPlotIni = None
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 def __init__(self, indexFig,nsubplot,winTitle):
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 self.width = 700
self.height = 150
self.indexFig = indexFig
self.ncol = 1
self.nrow = nsubplot
initMatplotlib(indexFig,self.ncol,self.nrow,winTitle,self.width,self.height)
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167
self.isPlotIni = False
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 def setFigure(self,indexFig):
setFigure(indexFig)
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167
def setNewPage(self, pltitle='No title'):
szchar = 0.7
# setNewPage()
setPlTitle(pltitle,'black', szchar=szchar)
setSubpages(self.ncol, self.nrow)
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 def setPosition(self):
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 xi = 0.07; xf = 0.9
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 yi = 0.15; yf = 0.8
xpos = [xi,xf]
ypos = [yi,yf]
self.__xpos = xpos
self.__ypos = ypos
return xpos,ypos
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 def createObjects(self,subplot,xmin,xmax,ymin,ymax,title,xlabel,ylabel):
szchar = 0.7
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 name = 'linear'
key = name + '%d'%subplot
xrange = [xmin,xmax]
yrange = [ymin,ymax]
xpos,ypos = self.setPosition()
linearObj = BaseGraph(name,subplot,xpos,ypos,xlabel,ylabel,title,szchar,xrange,yrange)
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 self.linearObjDic[key] = linearObj
def iniPlot(self,subplot):
name = 'linear'
key = name + '%d'%subplot
linearObj = self.linearObjDic[key]
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 linearObj.makeAxes(self.indexFig,self.nrow,self.ncol,subplot)
linearObj.plotBox(linearObj.xrange[0], linearObj.xrange[1], linearObj.yrange[0], linearObj.yrange[1], 'bcnst', 'bcnstv')
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 def plot(self,subplot,x,y,type='abs'):
name = 'linear'
key = name + '%d'%subplot
linearObj = self.linearObjDic[key]
if type.lower() == 'simple':
colline = 9
linearObj.basicLineTimePlot(x, y)
linearObj.setXYData(x,y,'real')
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 def refresh(self):
refresh()
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 def show(self):
show()
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 class PcolorPlot:
pcolorObjDic = {}
colorbarObjDic = {}
pwprofileObjDic = {}
showColorbar = None
showPowerProfile = None
XAxisAsTime = None
width = None
height = None
__spcxpos = None
__spcypos = None
__cmapxpos = None
__cmapypos = None
__profxpos = None
__profypos = None
__lastTitle = None
def __init__(self,indexFig,nsubplot,winTitle,colormap,showColorbar,showPowerProfile,XAxisAsTime):
self.width = 460
self.height = 300
self.showColorbar = showColorbar
self.showPowerProfile = showPowerProfile
self.XAxisAsTime = XAxisAsTime
ncol = int(numpy.sqrt(nsubplot)+0.9)
nrow = int(nsubplot*1./ncol + 0.9)
self.ncol = ncol
self.nrow = nrow
self.indexFig = indexFig
initMatplotlib(indexFig,ncol,nrow,winTitle,self.width,self.height)
setColormap(colormap)
def setFigure(self,indexFig):
setFigure(indexFig)
def setSpectraPos(self): #modificar valores de acuerdo al colorbar y pwprofile
if self.showPowerProfile: xi = 0.09; xf = 0.6 #0.075
else: xi = 0.15; xf = 0.8 #0.8,0.7,0.5
yi = 0.15; yf = 0.80
xpos = [xi,xf]
ypos = [yi,yf]
self.__spcxpos = xpos
self.__spcypos = ypos
return xpos,ypos
def setColorbarScreenPos(self):
xi = self.__spcxpos[1] + 0.03; xf = xi + 0.03
yi = self.__spcypos[0]; yf = self.__spcypos[1]
xpos = [xi,xf]
ypos = [yi,yf]
self.__cmapxpos = xpos
self.__cmapypos = ypos
return xpos,ypos
def setPowerprofileScreenPos(self):
xi = self.__cmapxpos[1] + 0.07; xf = xi + 0.25
yi = self.__spcypos[0]; yf = self.__spcypos[1]
xpos = [xi,xf]
ypos = [yi,yf]
self.__profxpos = [xi,xf]
self.__profypos = [yi,yf]
return xpos,ypos
def createObjects(self,subplot,xmin,xmax,ymin,ymax,zmin,zmax,title,xlabel,ylabel):
'''
Crea los objetos necesarios para un subplot
'''
# Config Spectra plot
szchar = 0.7
name = 'spc'
key = name + '%d'%subplot
xrange = [xmin,xmax]
yrange = [ymin,ymax]
zrange = [zmin,zmax]
xpos,ypos = self.setSpectraPos()
pcolorObj = BaseGraph(name,subplot,xpos,ypos,xlabel,ylabel,title,szchar,xrange,yrange,zrange)
#pcolorObj.makeAxes(self.indexFig,self.nrow,self.ncol,subplot)
self.pcolorObjDic[key] = pcolorObj
# Config Colorbar
if self.showColorbar:
szchar = 0.65
name = 'colorbar'
key = name + '%d'%subplot
xpos,ypos = self.setColorbarScreenPos()
xrange = [0.,1.]
yrange = [zmin,zmax]
cmapObj = BaseGraph(name,subplot,xpos,ypos,'','','dB',szchar,xrange,yrange)
self.colorbarObjDic[key] = cmapObj
# Config Power profile
if self.showPowerProfile:
szchar = 0.55
name = 'pwprofile'
key = name + '%d'%subplot
xpos,ypos = self.setPowerprofileScreenPos()
xrange = [zmin,zmax]
yrange = [ymin,ymax]
powObj = BaseGraph(name,subplot,xpos,ypos,'dB','','Power Profile',szchar,xrange,yrange)
#powObj.makeAxes(self.indexFig,self.nrow,self.ncol,subplot)
self.pwprofileObjDic[key] = powObj
def setNewPage(self, pltitle='No title'):
szchar = 0.7
setNewPage()
setPlTitle(pltitle,'black', szchar=szchar)
setSubpages(self.ncol, self.nrow)
def closePage(self):
closePage()
def show(self):
show()
def iniPlot(self,subplot):
'''
Inicializa los subplots con su frame, titulo, etc
'''
# Config Spectra plot
name = 'spc'
key = name + '%d'%subplot
pcolorObj = self.pcolorObjDic[key]
pcolorObj.makeAxes(self.indexFig,self.nrow,self.ncol,subplot)
pcolorObj.plotBox(pcolorObj.xrange[0], pcolorObj.xrange[1], pcolorObj.yrange[0], pcolorObj.yrange[1], 'bcnst', 'bcnstv')
# Config Colorbar
if self.showColorbar:
name = 'colorbar'
key = name + '%d'%subplot
cmapObj = self.colorbarObjDic[key]
cmapObj.setParentAxesId(pcolorObj)
# cmapObj.plotBox(cmapObj.xrange[0], cmapObj.xrange[1], cmapObj.yrange[0], cmapObj.yrange[1], 'bc', 'bcmtsv')
cmapObj.colorbarPlot(cmapObj.xrange[0], cmapObj.xrange[1], cmapObj.yrange[0], cmapObj.yrange[1])
# cmapObj.plotBox(cmapObj.xrange[0], cmapObj.xrange[1], cmapObj.yrange[0], cmapObj.yrange[1], 'bc', 'bcmtsv')
# Config Power profile
if self.showPowerProfile:
name = 'pwprofile'
key = name + '%d'%subplot
powObj = self.pwprofileObjDic[key]
powObj.setLineStyle(2)
powObj.plotBox(powObj.xrange[0], powObj.xrange[1], powObj.yrange[0], powObj.yrange[1], 'bcntg', 'bc')
powObj.setLineStyle(1)
powObj.plotBox(powObj.xrange[0], powObj.xrange[1], powObj.yrange[0], powObj.yrange[1], 'bc', 'bc')
def printTitle(self,pltitle):
setPlTitle(pltitle,'black')
def plot(self,subplot,x,y,z,subtitle=''):
# Spectra plot
name = 'spc'
key = name + '%d'%subplot
# newx = [x[0],x[-1]]
pcolorObj = self.pcolorObjDic[key]
# pcolorObj.plotBox(pcolorObj.xrange[0], pcolorObj.xrange[1], pcolorObj.yrange[0], pcolorObj.yrange[1], 'bcst', 'bcst')
#pcolorObj.delLabels()
pcolorObj.setLabels(title=subtitle)
deltax = None; deltay = None
pcolorObj.advPcolorPlot(z,
x,
y,
xmin=pcolorObj.xrange[0],
xmax=pcolorObj.xrange[1],
ymin=pcolorObj.yrange[0],
ymax=pcolorObj.yrange[1],
zmin=pcolorObj.zrange[0],
zmax=pcolorObj.zrange[1],
deltax=deltax,
deltay=deltay,
getGrid=pcolorObj.getGrid)
#Solo se calcula la primera vez que se ingresa a la funcion
pcolorObj.getGrid = False
#pcolorObj.plotBox(pcolorObj.xrange[0], pcolorObj.xrange[1], pcolorObj.yrange[0], pcolorObj.yrange[1], 'bcst', 'bcst', nolabels=True)
# Power Profile
if self.showPowerProfile:
power = numpy.average(z, axis=0)
name = 'pwprofile'
key = name + '%d'%subplot
powObj = self.pwprofileObjDic[key]
if powObj.setXYData() != None:
#clearData(powObj)
powObj.setLineStyle(2)
powObj.plotBox(powObj.xrange[0], powObj.xrange[1], powObj.yrange[0], powObj.yrange[1], 'bcntg', 'bc')
powObj.setLineStyle(1)
else:
powObj.setXYData(power,y)
powObj.plotBox(powObj.xrange[0], powObj.xrange[1], powObj.yrange[0], powObj.yrange[1], 'bc', 'bc')
powObj.basicXYPlot(power,y)
powObj.setXYData(power,y)
def savePlot(self,indexFig,filename):
width = self.width*self.ncol
hei = self.height*self.nrow
savePlplot(filename,width,hei)
def refresh(self):
refresh()
class RtiPlot:
pcolorObjDic = {}
colorbarObjDic = {}
pwprofileObjDic = {}
showColorbar = None
showPowerProfile = None
XAxisAsTime = None
widht = None
height = None
__rtixpos = None
__rtiypos = None
__cmapxpos = None
__cmapypos = None
__profxpos = None
__profypos = None
def __init__(self,indexFig,nsubplot,winTitle,colormap,showColorbar,showPowerProfile,XAxisAsTime):
self.width = 700
self.height = 150
self.showColorbar = showColorbar
self.showPowerProfile = showPowerProfile
self.XAxisAsTime = XAxisAsTime
ncol = 1
nrow = nsubplot
initMatplotlib(indexFig,ncol,nrow,winTitle,self.width,self.height)
setColormap(colormap)
self.ncol = ncol
self.nrow = nrow
def setFigure(self,indexFig):
setFigure(indexFig)
def setRtiScreenPos(self):
if self.showPowerProfile: xi = 0.07; xf = 0.65
else: xi = 0.07; xf = 0.9
yi = 0.15; yf = 0.80
xpos = [xi,xf]
ypos = [yi,yf]
self.__rtixpos = xpos
self.__rtiypos = ypos
return xpos,ypos
def setColorbarScreenPos(self):
xi = self.__rtixpos[1] + 0.03; xf = xi + 0.03
yi = self.__rtiypos[0]; yf = self.__rtiypos[1]
xpos = [xi,xf]
ypos = [yi,yf]
self.__cmapxpos = xpos
self.__cmapypos = ypos
return xpos,ypos
def setPowerprofileScreenPos(self):
xi = self.__cmapxpos[1] + 0.05; xf = xi + 0.20
yi = self.__rtiypos[0]; yf = self.__rtiypos[1]
xpos = [xi,xf]
ypos = [yi,yf]
self.__profxpos = [xi,xf]
self.__profypos = [yi,yf]
return xpos,ypos
def setup(self,subplot,xmin,xmax,ymin,ymax,zmin,zmax,title,xlabel,ylabel,timedata,timezone='lt',npoints=100):
# Config Rti plot
szchar = 1.10
name = 'rti'
key = name + '%d'%subplot
# xmin, xmax --> minHour, max Hour : valores que definen el ejex x=[horaInicio,horaFinal]
thisDateTime = datetime.datetime.fromtimestamp(timedata)
startDateTime = datetime.datetime(thisDateTime.year,thisDateTime.month,thisDateTime.day,xmin,0,0)
endDateTime = datetime.datetime(thisDateTime.year,thisDateTime.month,thisDateTime.day,xmax,59,59)
deltaTime = 0
if timezone == 'lt':
deltaTime = time.timezone
startTimeInSecs = time.mktime(startDateTime.timetuple()) - deltaTime
endTimeInSecs = time.mktime(endDateTime.timetuple()) - deltaTime
xrange = [startTimeInSecs,endTimeInSecs]
totalTimeInXrange = endTimeInSecs - startTimeInSecs + 1.
deltax = totalTimeInXrange / npoints
yrange = [ymin,ymax]
zrange = [zmin,zmax]
xpos,ypos = self.setRtiScreenPos()
pcolorObj = BaseGraph(name,subplot,xpos,ypos,xlabel,ylabel,title,szchar,xrange,yrange,zrange,deltax)
if self.XAxisAsTime:
pcolorObj.setXAxisAsTime(self.XAxisAsTime)
xopt = 'bcnstd'
yopt = 'bcnstv'
else:
xopt = 'bcnst'
yopt = 'bcnstv'
pcolorObj.plotBox(pcolorObj.xrange[0], pcolorObj.xrange[1], pcolorObj.yrange[0], pcolorObj.yrange[1], xopt, yopt)
self.pcolorObjDic[key] = pcolorObj
# Config Colorbar
if self.showColorbar:
szchar = 0.9
name = 'colorbar'
key = name + '%d'%subplot
xpos,ypos = self.setColorbarScreenPos()
xrange = [0.,1.]
yrange = [zmin,zmax]
cmapObj = BaseGraph(name,subplot,xpos,ypos,'','','dB',szchar,xrange,yrange)
cmapObj.plotBox(cmapObj.xrange[0], cmapObj.xrange[1], cmapObj.yrange[0], cmapObj.yrange[1], 'bc', 'bcm')
cmapObj.colorbarPlot(cmapObj.xrange[0], cmapObj.xrange[1], cmapObj.yrange[0], cmapObj.yrange[1])
cmapObj.plotBox(cmapObj.xrange[0], cmapObj.xrange[1], cmapObj.yrange[0], cmapObj.yrange[1], 'bc', 'bcmtsv')
self.colorbarObjDic[key] = cmapObj
# Config Power profile
if self.showPowerProfile:
szchar = 0.8
name = 'pwprofile'
key = name + '%d'%subplot
xpos,ypos = self.setPowerprofileScreenPos()
xrange = [zmin,zmax]
yrange = [ymin,ymax]
powObj = BaseGraph(name,subplot,xpos,ypos,'dB','','Power Profile',szchar,xrange,yrange)
powObj.setLineStyle(2)
powObj.plotBox(powObj.xrange[0], powObj.xrange[1], powObj.yrange[0], powObj.yrange[1], 'bcntg', 'bc')
powObj.setLineStyle(1)
powObj.plotBox(powObj.xrange[0], powObj.xrange[1], powObj.yrange[0], powObj.yrange[1], 'bc', 'bc')
self.pwprofileObjDic[key] = powObj
def plot(self,subplot,x,y,z):
# RTI plot
name = 'rti'
key = name + '%d'%subplot
data = numpy.reshape(z, (1,-1))
data = numpy.abs(data)
data = 10*numpy.log10(data)
newx = [x,x+1]
pcolorObj = self.pcolorObjDic[key]
if pcolorObj.xaxisIsTime:
xopt = 'bcstd'
yopt = 'bcst'
else:
xopt = 'bcst'
yopt = 'bcst'
pcolorObj.plotBox(pcolorObj.xrange[0], pcolorObj.xrange[1], pcolorObj.yrange[0], pcolorObj.yrange[1], xopt, yopt)
deltax = pcolorObj.deltax
deltay = None
if pcolorObj.xmin == None and pcolorObj.xmax == None:
pcolorObj.xmin = x
pcolorObj.xmax = x
if x >= pcolorObj.xmax:
xmin = x
xmax = x + deltax
x = [x]
pcolorObj.advPcolorPlot(data,
x,
y,
xmin=xmin,
xmax=xmax,
ymin=pcolorObj.yrange[0],
ymax=pcolorObj.yrange[1],
zmin=pcolorObj.zrange[0],
zmax=pcolorObj.zrange[1],
deltax=deltax,
deltay=deltay,
getGrid=pcolorObj.getGrid)
pcolorObj.xmin = xmin
pcolorObj.xmax = xmax
# Power Profile
if self.showPowerProfile:
data = numpy.reshape(data,(numpy.size(data)))
name = 'pwprofile'
key = name + '%d'%subplot
powObj = self.pwprofileObjDic[key]
if powObj.setXYData() != None:
clearData(powObj)
powObj.setLineStyle(2)
powObj.plotBox(powObj.xrange[0], powObj.xrange[1], powObj.yrange[0], powObj.yrange[1], 'bcntg', 'bc')
powObj.setLineStyle(1)
else:
powObj.setXYData(data,y)
powObj.plotBox(powObj.xrange[0], powObj.xrange[1], powObj.yrange[0], powObj.yrange[1], 'bc', 'bc')
powObj.basicXYPlot(data,y)
powObj.setXYData(data,y)
def savePlot(self,indexFig,filename):
width = self.width*self.ncol
hei = self.height*self.nrow
savePlplot(filename,width,hei)
def refresh(self):
refresh()
if __name__ == '__main__':
"""
Ejemplo1
"""
#Setting the signal
fs = 8000
f0 = 200
f1 = 400
T = 1./fs
x = numpy.arange(160)
y1 = numpy.sin(2*numpy.pi*f0*x*T)
y2 = numpy.sin(2*numpy.pi*f1*x*T)
signalList = [y1,y2]
xmin = numpy.min(x)
xmax = numpy.max(x)
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 ymin = numpy.min(y1) - 10
ymax = numpy.max(y1) + 10
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 subplotTitle = "subplot no. "
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146 xlabel = ""
ylabel = ""
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 indexFig = 1
nsubplot = 2
winTitle = "figura"
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 isPlotIni = False
isPlotConfig = False
ntimes = 10
# Instancia del objeto
linearObj = LinearPlot(indexFig,nsubplot,winTitle)
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 for i in range(ntimes):
# Crea los subplots
if not(linearObj.isPlotIni):
for index in range(nsubplot):
indexplot = index + 1
title = subplotTitle + '%d'%indexplot
linearObj.createObjects(indexplot,xmin,xmax,ymin,ymax,title,xlabel,ylabel)
linearObj.isPlotIni = True
# Inicializa el grafico en cada iteracion
linearObj.setFigure(indexFig)
linearObj.setNewPage("")
for index in range(nsubplot):
subplot = index
linearObj.iniPlot(subplot+1)
#plotea los datos
for channel in range(nsubplot):
data = y1 + numpy.random.rand(len(y1))
linearObj.plot(channel+1, x, data, type='simple')
linearObj.refresh()
# linearObj.closePage() #descomentar esta linea para mas iteraciones
time.sleep(0.05)
linearObj.show()
print "example 1 completed"
Alexander Valdez
Se añadio la clase SpectraHeis, spectraHeisProcessor...
r146
Alexander Valdez
Regresa a la version original desarrollada por Marco M.
r165 """
Ejemplo2
"""
# make these smaller to increase the resolution
dx, dy = 0.05, 0.05
x = numpy.arange(-3.0, 3.0001, dx)
y = numpy.arange(-2.0, 2.0001, dy)
# X,Y = numpy.meshgrid(x, y)
X,Y = sn.ndgrid(x, y)
Z = (1- X/2 + X**5 + Y**3)*numpy.exp(-X**2-Y**2)
# Creating Object
indexPlot = 2
nsubplot = 1
winTitle = "mi grafico pcolor"
colormap = "br_green"
showColorbar = True
showPowerProfile = False
XAxisAsTime = False
subplotTitle = "subplot no. "
xlabel = ""
ylabel = ""
xmin = -3.0
xmax = 3.0
ymin = -2.0
ymax = 2.0
zmin = -0.3
zmax = 1.0
isPlotIni = False
isPlotConfig = False
ntimes = 10
for i in range(ntimes):
# Instancia del objeto
if not(isPlotConfig):
pcolorObj = PcolorPlot(indexPlot, nsubplot, winTitle, colormap, showColorbar, showPowerProfile, XAxisAsTime)
isPlotConfig = True
# Crea los subplots
if not(isPlotIni):
for index in range(nsubplot):
indexplot = index + 1
title = subplotTitle + '%d'%indexplot
subplot = index
pcolorObj.createObjects(indexplot,xmin,xmax,ymin,ymax,zmin,zmax,title,xlabel,ylabel)
isPlotIni = True
# Inicializa el grafico en cada iteracion
pcolorObj.setFigure(indexPlot)
pcolorObj.setNewPage("")
for index in range(nsubplot):
subplot = index
pcolorObj.iniPlot(subplot+1)
#plotea los datos
for channel in range(nsubplot):
data = Z+0.1*numpy.random.randn(len(x),len(y))
pcolorObj.plot(channel+1, x, y, data)
pcolorObj.refresh()
# pcolorObj.closePage() #descomentar esta linea para mas iteraciones
time.sleep(1)
pcolorObj.show()
Daniel Valdez
Se modifica el metodo LinearPlot para ploteo interactivo. Se adaptó el ejemplo 1. Se plotean dos graficos, el primero es el de una señal senoidal con ruido aleatorio, el segundo grafico es del tipo pcolor.
r167 print "example 2 completed"