##// END OF EJS Templates
Optimizacion de graficos con buffer, el buffer se crea en la clase Axes del modulo figure.py, se agrega el metodo pcolorbuffer....
Optimizacion de graficos con buffer, el buffer se crea en la clase Axes del modulo figure.py, se agrega el metodo pcolorbuffer. En mpldriver.py se agrega el metodo addpcolorbuffer donde se limpia el buffer de matplotlib que genera pcolormesh Estas modificaciones se aplican a los graficos RTI y Mapa de Coherencias.

File last commit:

r169:661bb8af254a
r318:2312df9eac7d
Show More
schainPlot.py
270 lines | 6.8 KiB | text/x-python | PythonLexer
Miguel Valdez
Inicia nueva version de graficos
r129
import numpy
import schainPlplotLib
class Figure:
__driverObj = None
__isDriverOpen = False
__isFigureOpen = False
__isConfig = False
Miguel Valdez
r130 __xw = None
__yw = None
xmin = None
xmax = None
minvalue = None
maxvalue = None
Miguel Valdez
Inicia nueva version de graficos
r129
idfigure = None
nframes = None
wintitle = wintitle
colormap = None
driver = None
overplot = None
frameObjList = []
Daniel Valdez
r132 def __init__(self, idfigure, nframes, wintitle, xw=600, yw=800, overplot=0, driver='plplot', colormap='br_green', *showGraphs):
Miguel Valdez
Inicia nueva version de graficos
r129
Daniel Valdez
r132 self.driver = driver
Miguel Valdez
Inicia nueva version de graficos
r129 self.idfigure = idfigure
Daniel Valdez
r132 self.nframes = nframes
Miguel Valdez
Inicia nueva version de graficos
r129 self.wintitle = wintitle
self.overplot = overplot
Daniel Valdez
r132 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)
Miguel Valdez
Inicia nueva version de graficos
r129
Daniel Valdez
r132 self.__driverObj.driver.configDriver()
Miguel Valdez
Inicia nueva version de graficos
r129
def __openDriver(self):
Daniel Valdez
r132 self.__driverObj.driver.openDriver()
Miguel Valdez
Inicia nueva version de graficos
r129
def __openFigure(self):
nrows, ncolumns = self.getSubplots()
Daniel Valdez
r132 self.__driverObj.driver.openFigure()
self.__driverObj.driver.setSubPlots(nrows, ncolumns)
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 def __isOutOfXRange(self, x):
Miguel Valdez
Inicia nueva version de graficos
r129 pass
Miguel Valdez
r130 def __changeXRange(self, x):
Miguel Valdez
Inicia nueva version de graficos
r129 pass
Miguel Valdez
r130
def __createFrames(self):
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 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)
Miguel Valdez
Inicia nueva version de graficos
r129 if not(self.__isDriverOpen):
self.__openDriver()
self.__isDriverOpen = True
if not(self.__isConfig):
Miguel Valdez
r130 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)
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 self.__createFrames()
Miguel Valdez
Inicia nueva version de graficos
r129 self.__isConfig = True
Miguel Valdez
r130
if not(self.__isOutOfXRange(x)):
self.__changeXRange(x)
Miguel Valdez
Inicia nueva version de graficos
r129 if self.__isFigureOpen:
Miguel Valdez
r130 self.__driverObj.closePage()
Miguel Valdez
Inicia nueva version de graficos
r129 self.__isFigureOpen = False
if not(self.__isFigureOpen):
self.__openFigure()
Miguel Valdez
r130
for channel in channelList:
frameObj = self.frameObjList[channel]
frameObj.init(xmin=xmin,
xmax=xmax,
minvalue=minvalue,
maxvalue=maxvalue)
Miguel Valdez
Inicia nueva version de graficos
r129 self.__isFigureOpen = True
for channel in channelList:
Miguel Valdez
r130 dataCh = data1D[channel]
frameObj = self.frameObjList[channel]
frameObj.clearData()
Miguel Valdez
Inicia nueva version de graficos
r129 frameObj.plot(dataCh)
Miguel Valdez
r130
frameObj.refresh()
Miguel Valdez
Inicia nueva version de graficos
r129
if not(self.overplot):
Miguel Valdez
r130 self.__driverObj.closeFigure()
Miguel Valdez
Inicia nueva version de graficos
r129 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):
Daniel Valdez
r132
raise ValueError, "No implemented"
Miguel Valdez
Inicia nueva version de graficos
r129
class Frame:
Miguel Valdez
r130 """
subplots
"""
Miguel Valdez
Inicia nueva version de graficos
r129 plotObjList = []
Miguel Valdez
r130 def __init__(self, idframe, showGraph1=False, showGraph2=False):
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 self.idframe = idframe
Miguel Valdez
Inicia nueva version de graficos
r129 self.showGraph1 = showGraph1
self.showGraph2 = showGraph2
Miguel Valdez
r130 self.nplots = 1 + showGraph1 + showGraph2
self.__createPlots()
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 def __createPlots(self):
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 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
Miguel Valdez
Inicia nueva version de graficos
r129
def __getScreenPosGraph1(self):
Miguel Valdez
r130 xi = 1.2
yi = 2.3
xw = 2.0
yw = 1.4
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 return xi, yi, xw, yw
Miguel Valdez
Inicia nueva version de graficos
r129
def __getScreenPosGraph2(self):
Miguel Valdez
r130 xi = 1.2
yi = 2.3
xw = 2.0
yw = 1.4
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 return xi, yi, xw, yw
Miguel Valdez
Inicia nueva version de graficos
r129
def __getScreenPos(self, nplot):
if nplot == 0:
Miguel Valdez
r130 xi, yi, xw, yw = self.__getScreenPosMain()
Miguel Valdez
Inicia nueva version de graficos
r129 if nplot == 1:
Miguel Valdez
r130 xi, yi, xw, yw = self.__getScreenPosMain()
Miguel Valdez
Inicia nueva version de graficos
r129 if nplot == 2:
Miguel Valdez
r130 xi, yi, xw, yw = self.__getScreenPosMain()
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 return xi, yi, xw, yw
def init(self, xmin, xmax, ymin, yamx, minvalue, maxvalue):
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 """
"""
for plotObj in self.plotObjList:
plotObj.plotBox(xmin, xmax, ymin, yamx, minvalue, maxvalue)
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 def clearData(self):
Miguel Valdez
Inicia nueva version de graficos
r129 pass
Miguel Valdez
r130
Miguel Valdez
Inicia nueva version de graficos
r129 def plot(self, data):
Miguel Valdez
r130
for plotObj in self.plotObjList:
plotObj.plotData(data)
def refresh(self):
pass
Miguel Valdez
Inicia nueva version de graficos
r129
class Plot:
Miguel Valdez
r130 def __init__(self, xi, yi, xw, yw):
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 self.xi = xi
self.yi = yi
self.xw = xw
self.yw = yw
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 def __setRange(self, xrange, yrange, zrange):
Miguel Valdez
Inicia nueva version de graficos
r129 pass
Miguel Valdez
r130 def __setLabels(self, xlabel, ylabel, zlabel):
Miguel Valdez
Inicia nueva version de graficos
r129 pass
Miguel Valdez
r130
Miguel Valdez
Inicia nueva version de graficos
r129
Miguel Valdez
r130 def plotBox(self,xmin, xmax, ymin, yamx, minvalue, maxvalue):
Miguel Valdez
Inicia nueva version de graficos
r129 pass
def plotData(self):
Miguel Valdez
r130
raise ValueError, ""
Miguel Valdez
Inicia nueva version de graficos
r129