##// END OF EJS Templates
AMISR Reader integration with Signal Chain Blocks, this time just only for Voltages to Profile Selection and Plotting Scope(Power,IQ) and Power Profile(dB). There is thwo python scripts as experiment's test.
AMISR Reader integration with Signal Chain Blocks, this time just only for Voltages to Profile Selection and Plotting Scope(Power,IQ) and Power Profile(dB). There is thwo python scripts as experiment's test.

File last commit:

r169:661bb8af254a
r474:e3c42f4268a9
Show More
schainPlot.py
270 lines | 6.8 KiB | text/x-python | PythonLexer
import numpy
import schainPlplotLib
class Figure:
__driverObj = None
__isDriverOpen = False
__isFigureOpen = False
__isConfig = False
__xw = None
__yw = None
xmin = None
xmax = None
minvalue = None
maxvalue = None
idfigure = None
nframes = None
wintitle = wintitle
colormap = None
driver = None
overplot = None
frameObjList = []
def __init__(self, idfigure, nframes, wintitle, xw=600, yw=800, overplot=0, driver='plplot', colormap='br_green', *showGraphs):
self.driver = driver
self.idfigure = idfigure
self.nframes = nframes
self.wintitle = wintitle
self.overplot = overplot
self.colormap = colormap
self.showGraph1 = showGraphs[0]
self.showGraph2 = showGraphs[1]
self.__xw = xw
self.__yw = yw
self.__driverObj = Driver(driver, idfigure, xw, yw, wintitle, overplot, colormap, *showGraphs)
self.__driverObj.driver.configDriver()
def __openDriver(self):
self.__driverObj.driver.openDriver()
def __openFigure(self):
nrows, ncolumns = self.getSubplots()
self.__driverObj.driver.openFigure()
self.__driverObj.driver.setSubPlots(nrows, ncolumns)
def __isOutOfXRange(self, x):
pass
def __changeXRange(self, x):
pass
def __createFrames(self):
for frame in range(self.nframes):
frameObj = Frame(idframe = frame,
showGraph1 = self.showGraph1,
showGraph2 = self.showGraph2
)
self.frameObjList.append(frameObj)
def plot1DArray(self, data1D, x=None, channelList=None, xmin=None, xmax=None, minvalue=None, maxvlaue=None, save=False, gpath='./'):
nx, ny = data1D.shape
if channelList == None:
chanellList = range(nx)
if x == None:
x = numpy.arange(data1D.size)
if not(self.__isDriverOpen):
self.__openDriver()
self.__isDriverOpen = True
if not(self.__isConfig):
if self.xmin == None: xmin = numpy.min(x)
if self.xmax == None: xmax = numpy.max(x)
if self.minvalue == None: minvalue = numpy.min(data1D)
if self.maxvalue == None: maxvalue = numpy.max(data1D)
self.__createFrames()
self.__isConfig = True
if not(self.__isOutOfXRange(x)):
self.__changeXRange(x)
if self.__isFigureOpen:
self.__driverObj.closePage()
self.__isFigureOpen = False
if not(self.__isFigureOpen):
self.__openFigure()
for channel in channelList:
frameObj = self.frameObjList[channel]
frameObj.init(xmin=xmin,
xmax=xmax,
minvalue=minvalue,
maxvalue=maxvalue)
self.__isFigureOpen = True
for channel in channelList:
dataCh = data1D[channel]
frameObj = self.frameObjList[channel]
frameObj.clearData()
frameObj.plot(dataCh)
frameObj.refresh()
if not(self.overplot):
self.__driverObj.closeFigure()
self.__isFigureOpen = False
def plot2DArray(self, x, y, data2D, xmin=None, xmax=None, ymin=None, ymax=None, minvalue=None, maxvalue=None, save=False, gpath='./'):
if not(self.__isCOpen):
self.__createFrames()
self.__openFigure()
self.__isOpen = True
if not(self.__isConfig):
self.setRange(xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax, minvalue=minvalue, maxvalue=maxvalue)
self.__isConfig = True
for channel in channelList:
dataCh = dataArray[channel]
frameObj = frameObjList[channel]
frameObj.plot(dataCh)
def saveFigure(self, filename):
pass
def getSubplots(self):
raise ValueError, "No implemented"
class Frame:
"""
subplots
"""
plotObjList = []
def __init__(self, idframe, showGraph1=False, showGraph2=False):
self.idframe = idframe
self.showGraph1 = showGraph1
self.showGraph2 = showGraph2
self.nplots = 1 + showGraph1 + showGraph2
self.__createPlots()
def __createPlots(self):
for nplot in range(self.nplots):
xi, yi, xw, yw = self.__getScreenPos(nplot)
plotObj = Plot(xi, yi, xw, yw)
self.plotObjList.append(plotObj)
def __getScreenPosMainPlot(self):
"""
Calcula las coordenadas asociadas al plot principal.
"""
xi = 1.2
yi = 2.3
xw = 2.0
yw = 1.4
return xi, yi, xw, yw
def __getScreenPosGraph1(self):
xi = 1.2
yi = 2.3
xw = 2.0
yw = 1.4
return xi, yi, xw, yw
def __getScreenPosGraph2(self):
xi = 1.2
yi = 2.3
xw = 2.0
yw = 1.4
return xi, yi, xw, yw
def __getScreenPos(self, nplot):
if nplot == 0:
xi, yi, xw, yw = self.__getScreenPosMain()
if nplot == 1:
xi, yi, xw, yw = self.__getScreenPosMain()
if nplot == 2:
xi, yi, xw, yw = self.__getScreenPosMain()
return xi, yi, xw, yw
def init(self, xmin, xmax, ymin, yamx, minvalue, maxvalue):
"""
"""
for plotObj in self.plotObjList:
plotObj.plotBox(xmin, xmax, ymin, yamx, minvalue, maxvalue)
def clearData(self):
pass
def plot(self, data):
for plotObj in self.plotObjList:
plotObj.plotData(data)
def refresh(self):
pass
class Plot:
def __init__(self, xi, yi, xw, yw):
self.xi = xi
self.yi = yi
self.xw = xw
self.yw = yw
def __setRange(self, xrange, yrange, zrange):
pass
def __setLabels(self, xlabel, ylabel, zlabel):
pass
def plotBox(self,xmin, xmax, ymin, yamx, minvalue, maxvalue):
pass
def plotData(self):
raise ValueError, ""