##// END OF EJS Templates
Bug fixed: Al graficar los canales selecionados en SpectraPlot
Bug fixed: Al graficar los canales selecionados en SpectraPlot

File last commit:

r201:86bbb8030d3e
r203:02fdfa7ac337
Show More
figure.py
231 lines | 6.5 KiB | text/x-python | PythonLexer
import numpy
import mpldriver
class Figure:
__driver = mpldriver
idfigure = None
wintitle = None
width = None
height = None
nplots = None
axesObjList = []
WIDTH = None
HEIGHT = None
def __init__(self):
raise ValueError, "This method is not implemented"
def getAxesObjList(self):
return self.axesObjList
def getSubplots(self):
raise ValueError, "Abstract method: This method should be defined"
def getScreenDim(self):
nrow, ncol = self.getSubplots()
width = self.WIDTH*ncol
height = self.HEIGHT*nrow
return width, height
def init(self, idfigure, nplots, wintitle):
"""
Inicializa la figura de acuerdo al driver seleccionado
Input:
*args : Los parametros necesarios son
idfigure, wintitle, width, height
"""
self.idfigure = idfigure
self.nplots = nplots
self.wintitle = wintitle
self.width, self.height = self.getScreenDim()
self.fig = self.__driver.createFigure(self.idfigure,
self.wintitle,
self.width,
self.height)
self.axesObjList = []
def setDriver(self, driver=mpldriver):
self.__driver = driver
def setTitle(self, title):
self.__driver.setTitle(self.fig, title)
def setWinTitle(self, title):
self.__driver.setWinTitle(self.fig, title=title)
def setTextFromAxes(self, text):
raise ValueError, "Este metodo ha sido reemplazaado con el metodo setText de la clase Axes"
def makeAxes(self, nrow, ncol, xpos, ypos, colspan, rowspan):
raise ValueError, "Este metodo ha sido reemplazaado con el metodo addAxes"
def addAxes(self, *args):
"""
Input:
*args : Los parametros necesarios son
nrow, ncol, xpos, ypos, colspan, rowspan
"""
axesObj = Axes(self.fig, *args)
self.axesObjList.append(axesObj)
def draw(self):
self.__driver.draw(self.fig)
def run(self):
raise ValueError, "This method is not implemented"
axesList = property(getAxesObjList)
class Axes:
__driver = mpldriver
fig = None
ax = None
plot = None
firsttime = None
def __init__(self, *args):
"""
Input:
*args : Los parametros necesarios son
fig, nrow, ncol, xpos, ypos, colspan, rowspan
"""
ax = self.__driver.createAxes(*args)
self.fig = args[0]
self.ax = ax
self.plot = None
self.firsttime = True
def setText(self, text):
self.__driver.setAxesText(self.ax, text)
def pline(self, x, y,
xmin=None, xmax=None,
ymin=None, ymax=None,
xlabel='', ylabel='',
title='',
**kwargs):
"""
Input:
x :
y :
xmin :
xmax :
ymin :
ymax :
xlabel :
ylabel :
title :
**kwargs : Los parametros aceptados son
ticksize
"""
if self.firsttime:
if xmin == None: xmin = numpy.nanmin(x)
if xmax == None: xmax = numpy.nanmax(x)
if ymin == None: ymin = numpy.nanmin(y)
if ymax == None: ymax = numpy.nanmax(y)
self.plot = self.__driver.createPline(self.ax, x, y,
xmin, xmax,
ymin, ymax,
xlabel=xlabel,
ylabel=ylabel,
title=title,
**kwargs)
self.firsttime = False
return
self.__driver.pline(self.plot, x, y, xlabel=xlabel,
ylabel=ylabel,
title=title)
def pcolor(self, x, y, z,
xmin=None, xmax=None,
ymin=None, ymax=None,
zmin=None, zmax=None,
xlabel='', ylabel='',
title='',
**kwargs):
"""
Input:
x :
y :
x :
xmin :
xmax :
ymin :
ymax :
zmin :
zmax :
xlabel :
ylabel :
title :
**kwargs : Los parametros aceptados son
ticksize=9,
cblabel=''
"""
if self.firsttime:
if xmin == None: xmin = numpy.nanmin(x)
if xmax == None: xmax = numpy.nanmax(x)
if ymin == None: ymin = numpy.nanmin(y)
if ymax == None: ymax = numpy.nanmax(y)
if zmin == None: zmin = numpy.nanmin(z)
if zmax == None: zmax = numpy.nanmax(z)
self.plot = self.__driver.createPcolor(self.ax, x, y, z,
xmin, xmax,
ymin, ymax,
zmin, zmax,
xlabel=xlabel,
ylabel=ylabel,
title=title,
**kwargs)
self.firsttime = False
return
mesh = self.__driver.pcolor(self.plot, z, xlabel=xlabel,
ylabel=ylabel,
title=title)