diff --git a/schainpy/Graphics/PlotData.py b/schainpy/Graphics/PlotData.py new file mode 100644 index 0000000..bf5b18a --- /dev/null +++ b/schainpy/Graphics/PlotData.py @@ -0,0 +1,990 @@ +''' +Created on Jan 25, 2012 + +@author: Miguel Urco +''' + +import plplot +import numpy + +def cmap1_init(colormap="gray"): + + rgb_lvl = None + + # Routine for defining a specific color map 1 in HLS space. + # if gray is true, use basic grayscale variation from half-dark to light. + # otherwise use false color variation from blue (240 deg) to red (360 deg). + + # Independent variable of control points. + i = numpy.array((0., 1.)) + if colormap=="gray": + # Hue for control points. Doesn't matter since saturation is zero. + h = numpy.array((0., 0.)) + # Lightness ranging from half-dark (for interest) to light. + l = numpy.array((0.5, 1.)) + # Gray scale has zero saturation + s = numpy.array((0., 0.)) + + # number of cmap1 colours is 256 in this case. + plplot.plscmap1n(256) + # Interpolate between control points to set up cmap1. + plplot.plscmap1l(0, i, h, l, s) + + return None + + if colormap=="br_black": + # Hue ranges from blue (240 deg) to red (0 or 360 deg) + h = numpy.array((240., 0.)) + # Lightness and saturation are constant (values taken from C example). + l = numpy.array((0.6, 0.6)) + s = numpy.array((0.8, 0.8)) + + # number of cmap1 colours is 256 in this case. + plplot.plscmap1n(256) + # Interpolate between control points to set up cmap1. + plplot.plscmap1l(0, i, h, l, s) + + return None + + if colormap=="tricolor": + # Hue ranges from blue (240 deg) to red (0 or 360 deg) + h = numpy.array((240., 0.)) + # Lightness and saturation are constant (values taken from C example). + l = numpy.array((0.6, 0.6)) + s = numpy.array((0.8, 0.8)) + + # number of cmap1 colours is 256 in this case. + plplot.plscmap1n(3) + # Interpolate between control points to set up cmap1. + plplot.plscmap1l(0, i, h, l, s) + + return None + + if colormap == 'rgb' or colormap == 'rgb666': + + color_sz = 6 + ncolor = color_sz*color_sz*color_sz + pos = numpy.zeros((ncolor)) + r = numpy.zeros((ncolor)) + g = numpy.zeros((ncolor)) + b = numpy.zeros((ncolor)) + ind = 0 + for ri in range(color_sz): + for gi in range(color_sz): + for bi in range(color_sz): + r[ind] = ri/(color_sz-1.0) + g[ind] = gi/(color_sz-1.0) + b[ind] = bi/(color_sz-1.0) + pos[ind] = ind/(ncolor-1.0) + ind += 1 + rgb_lvl = [6,6,6] #Levels for RGB colors + + if colormap == 'rgb676': + ncolor = 6*7*6 + pos = numpy.zeros((ncolor)) + r = numpy.zeros((ncolor)) + g = numpy.zeros((ncolor)) + b = numpy.zeros((ncolor)) + ind = 0 + for ri in range(8): + for gi in range(8): + for bi in range(4): + r[ind] = ri/(6-1.0) + g[ind] = gi/(7-1.0) + b[ind] = bi/(6-1.0) + pos[ind] = ind/(ncolor-1.0) + ind += 1 + rgb_lvl = [6,7,6] #Levels for RGB colors + + if colormap == 'rgb685': + ncolor = 6*8*5 + pos = numpy.zeros((ncolor)) + r = numpy.zeros((ncolor)) + g = numpy.zeros((ncolor)) + b = numpy.zeros((ncolor)) + ind = 0 + for ri in range(8): + for gi in range(8): + for bi in range(4): + r[ind] = ri/(6-1.0) + g[ind] = gi/(8-1.0) + b[ind] = bi/(5-1.0) + pos[ind] = ind/(ncolor-1.0) + ind += 1 + rgb_lvl = [6,8,5] #Levels for RGB colors + + if colormap == 'rgb884': + ncolor = 8*8*4 + pos = numpy.zeros((ncolor)) + r = numpy.zeros((ncolor)) + g = numpy.zeros((ncolor)) + b = numpy.zeros((ncolor)) + ind = 0 + for ri in range(8): + for gi in range(8): + for bi in range(4): + r[ind] = ri/(8-1.0) + g[ind] = gi/(8-1.0) + b[ind] = bi/(4-1.0) + pos[ind] = ind/(ncolor-1.0) + ind += 1 + rgb_lvl = [8,8,4] #Levels for RGB colors + + plplot.plscmap1n(ncolor) + plplot.plscmap1l(1, pos, r, g, b) + + return rgb_lvl + +class BasicGraph(): + """ + + """ + xrange = None + yrange = None + zrange = None + + xlabel = None + ylabel = None + title = None + + legends = None + + __name = None + __subpage = None + __szchar = None + + __colormap = None + __colbox = None + __colleg = None + + __xpos = None + __ypos = None + + __xopt = None #"bcnst" + __yopt = None #"bcnstv" + + __xlpos = None + __ylpos = None + + __xrangeIsTime = None + + #Advanced + __xg = None + __yg = None + + def __init__(self): + """ + + """ + pass + + def setName(self, name): + self.__name = name + + def setScreenPos(self, xpos, ypos): + self.__xpos = xpos + self.__ypos = ypos + + def setScreenPos(self, xoff, yoff, xw, yw): + self.__xpos = [xoff, xoff + xw] + self.__ypos = [yoff, yoff + yw] + + def setSubpage(self, subpage): + self.__subpage = subpage + + def setRanges(self, xrange, yrange, zrange): + """ + """ + self.xrange = xrange + self.yrange = yrange + self.zrange = zrange + + def __setColormap(self, colormap=None): + + if colormap == None: + colormap = self.__colormap + + cmap1_init(colormap) + + def __setBox(self): + """ + + """ + plplot.plvpor(self.__xpos[0], self.__xpos[1], self.__ypos[0], self.__ypos[1]) + plplot.plwind(self.xrange[0], self.xrange[1], self.yrange[0], self.yrange[1]) + plplot.plbox(self.__xopt, 0.0, 0, self.__yopt, 0.0, 0) + plplot.pllab(self.xlabel, self.ylabel, self.title) + + def setup(self, title=None, xlabel=None, ylabel=None, colormap=None): + """ + """ + self.title = title + self.xlabel = xlabel + self.ylabel = ylabel + self.colormap = colormap + + def initSubpage(self): + plplot.pladv(self.__subpage) + plplot.plschr(0.0, self.__szchar) + + if self.__xrangeIsTime: + plplot.pltimefmt("%H:%M") + + self.__setColormap() + self.initPlot() + + def initPlot(self): + """ + + """ + plplot.plvpor(self.__xpos[0], self.__xpos[1], self.__ypos[0], self.__ypos[1]) + plplot.plwind(self.xrange[0], self.xrange[1], self.yrange[0], self.yrange[1]) + plplot.plbox(self.__xopt, 0.0, 0, self.__yopt, 0.0, 0) + plplot.pllab(self.xlabel, self.ylabel, self.title) + + + def basicXYPlot(self): + pass + + def basicXYwithErrorPlot(self): + pass + + def basicLineTimePlot(self): + pass + + def basicPcolorPlot(self, data, xmin, xmax, ymin, ymax, zmin, zmax): + """ + """ + + self.__setBox() + plplot.plimage(data, xmin, xmax, ymin, ymax, zmin, zmax, xmin, xmax, ymin, ymax) + + + def __getBoxpltr(self, x, y, deltax=None, deltay=None): + + if not(len(x)>1 and len(y)>1): + raise ValueError, "x axis and y axis are empty" + + if deltax == None: deltax = x[-1] - x[-2] + if deltay == None: deltay = y[-1] - y[-2] + + x1 = numpy.append(x, x[-1] + deltax) + y1 = numpy.append(y, y[-1] + deltay) + + xg = (numpy.multiply.outer(x1, numpy.ones(len(y1)))) + yg = (numpy.multiply.outer(numpy.ones(len(x1)), y1)) + + self.__xg = xg + self.__yg = yg + + def advPcolorPlot(self, data, x, y, zmin=0., zmax=0.): + """ + """ + + if self.__xg == None and self.__yg == None: + self.__getBoxpltr(x, y) + + plplot.plimagefr(data, x[0], x[-1], y[0], y[-1], 0., 0., zmin, zmax, plplot.pltr2, self.__xg, self.__yg) + + +class Graph(): + """ + """ + + graphObjDict = {} + + def __init__(self): + raise + + def setup(self): + raise + + def plotData(self): + raise + +class Spectrum(Graph): + + showColorbar = False + showPowerProfile = True + + + def __init__(self): + + key = "spec" + + specObj = BasicGraph() + specObj.setName(key) + + self.graphObjDict[key] = specObj + + + def setup(self, title="", xlabel="", ylabel="", colormap="jet", showColorbar=False, showPowerProfile=False): + + xi = 0.12 + xw = 0.86 + xf = xi + xw + + yi = 0.14 + yw = 0.80 + yf = yi + yw + + xcmapi = xcmapf = 0. + xpowi = xpowf = 0. + + specObj = self.graphObjDict[0] + specObj.setup(title, + xlabel, + ylabel, + colormap) + + if showColorbar: + key = "colorbar" + + cmapObj = BasicGraph() + cmapObj.setName(key) + cmapObj.setup(title="dBs", + xlabel="", + ylabel="", + colormap=colormap) + + self.graphObjDict[key] = cmapObject + + xcmapi = 0. + xcmapw = 0.16 + xw -= xcmapw + + if showPowerProfile: + key = "powerprof" + + powObj = BasicGraph() + powObj.setName(key) + powObj.setup(title="Power Profile", + xlabel="dBs", + ylabel="") + + self.graphObjDict[key] = powObject + + xpowi = 0. + xpoww = 0.23 + xw -= xpoww + + xf = xi + xw + yf = yi + yw + xcmapf = xf + + specObj.setScreenPos([xi, yf], [yi, yf]) + + if showColorbar: + xcmapi = xf + 0.2 + xcmapf = xcmapi + xcmapw + cmapObj.setScreenPos([xcmapi, ycmapf], [ycmapi, ycmapf]) + + if showPowerProfile: + xpowi = xcmapf + 0.3 + xpowf = xpowi + xpoww + powObj.setScreenPos([xpowi, ypowf], [ypowi, ypowf]) + + + specObj.initSubpage() + + if showColorbar: + cmapObj.initPlot() + + if showPowerProfile: + powObj.initPlot() + + self.showColorbar = showColorbar + self.showPowerProfile = showPowerProfile + + def setRanges(self, xrange=None, yrange=None, zrange=None): + + key = "spec" + specObj = self.graphObjDict[key] + specObj.setRanges(xrange, yrange, zrange) + + keyList = self.graphObjDict.keys() + + key = "colorbar" + if key in keyList: + cmapObj = self.graphObjDict[key] + cmapObj.setRanges([0., 1.], zrange, [0., 1.]) + + key = "powerprof" + if key in keyList: + powObj = self.graphObjDict[key] + powObj.setRanges(zrange, yrange) + + def plotData(self, data , xmin, xmax, ymin, ymax): + + pass + +class CrossSpectrum(Graph): + + def __init__(self): + pass + + def setup(self): + pass + + def plotData(self): + pass + +class Graph2(): + + def __init__(self): + """ + Initiation of variables + + Variables: + + type: + windowsize: + cmap: colormap + showcmap: show the colormap selected on the graphic + + """ + + self.id = None + self.subpage = None + self.type = None + self.windowsize = None + + self.szchar = 0.6 + self.title = None + self.xlabel = None + self.ylabel = None + + self.showGraph2 = None + self.cmap = None + self.showcmap = None + + self.xrangeIsTime = False + + self.xrange = () + self.yrange = () + self.zrange = () + + self.xscreen = () + self.yscreen = () + + self.xcmapscreen = () + self.ycmapscreen = () + + self.x2screen = () + self.y2screen = () + + + def setup(self, id, type=0, windowsize=1., title="", xlabel="", ylabel="", showGraph2=None, cmap="jet", showcmap=False, xrangeIsTime=False): + """ + Inputs: + type: This variable indicates the kind of graphic. Instantaneous data or background data + + 0: real instantaneous data, like spectrum + 1: background data, like spectrogram (RTI) + 2: complex instantaneous data, like cross-spectrum + + windowsize : Float. Size of window. It can be full window (1), half window (0.5) or 1 1/2 window (1.5) + cmap : Set the colormap to use + showcmap : Show the colormap used on the graphic. + + + Variables affected: + + """ + +# if windowsize == 1.: +# self.xscreen = (0.12, 0.96) +# self.yscreen = (0.14, 0.94) +# +# elif windowsize == 0.5: +# self.xscreen = (0.12, 0.52) +# self.yscreen = (0.14, 0.94) +# +# elif windowsize == 1.5: +# self.xscreen = (-0.44, 0.96) +# self.yscreen = (0.14, 0.94) +# +# else: +# raise ValueError, "type of graphic has not been properly set" + + if showGraph2 == None: + if type == 0: + showGraph2 = True + + if type == 1: + showGraph2 = True + + if type == 2: + showGraph2 = True + + xscreen = (0.12, 0.98) + yscreen = (0.14, 0.94) + xcmapscreen = (0., 0.) + ycmapscreen = (0.14, 0.94) + x2screen = (0., 0.) + y2screen = (0.14, 0.94) + + if type == 0: + + #showGraph2 <> PowerProfile + if showGraph2 and showcmap: + xscreen = (0.12, 0.62) + xcmapscreen = (0.64, 0.70) + x2screen = (0.75, 0.98) + + elif showGraph2: + xscreen = (0.12, 0.67) + xcmapscreen = (0., 0.) + x2screen = (0.7, 0.98) + + elif showcmap: + xscreen = (0.12, 0.85) + xcmapscreen = (0.87, 0.93) + x2screen = (0., 0.) + + if type == 1: + xscreen = (0.06, 0.98) + yscreen = (0.16, 0.84) + #showGraph2 <> Phase + if showGraph2 and showcmap: + xscreen = (0.06, 0.75) + xcmapscreen = (0.76, 0.80) + x2screen = (0.82, 0.98) + + elif showGraph2: + xscreen = (0.06, 0.80) + xcmapscreen = (0., 0.) + x2screen = (0.82, 0.98) + + elif showcmap: + xscreen = (0.06, 0.92) + xcmapscreen = (0.93, 0.96) + x2screen = (0., 0.) + + if type == 2: + if showGraph2 and showcmap: + xscreen = (0.12, 0.46) + xcmapscreen = (0.48, 0.54) + x2screen = (0.56, 0.98) + + elif showGraph2: + xscreen = (0.12, 0.54) + xcmapscreen = (0., 0.) + x2screen = (0.56, 0.98) + + elif showcmap: + xscreen = (0.12, 0.85) + xcmapscreen = (0.87, 0.93) + x2screen = (0., 0.) + + if type == 3: + xscreen = (0.12, 0.52) + x2screen = (0.76, 0.96) + + if type == 4: + xscreen = (-0.44, 0.96) + x2screen = (0.76, 0.96) + + + self.id = id + self.subpage = id + 1 + self.type = type + self.windowsize = windowsize + self.title = title + self.xlabel = xlabel + self.ylabel = ylabel + self.showGraph2 = showGraph2 + self.cmap = cmap + self.showcmap = showcmap + self.xrangeIsTime = xrangeIsTime + + self.xscreen = xscreen + self.yscreen = yscreen + self.x2screen = x2screen + self.y2screen = y2screen + self.xcmapscreen = xcmapscreen + self.ycmapscreen = ycmapscreen + + def setRanges(self, xrange=(), yrange=(), zrange=()): + """ + Inputs: + xrange + yrange + zrange + + Variables affected: + self.xrange + self.yrange + self.zrange + + """ + + self.xrange = xrange + self.yrange = yrange + self.zrange = zrange + + def setsubPage(self, subpage): + """ + """ + self.subpage = subpage + + def plotColorbar(self): + + if not(self.showcmap): + return 0 + + colors = numpy.arange(255) + colors = numpy.reshape(colors, (1,255)) + + plplot.plvpor(self.xcmapscreen[0], self.xcmapscreen[1], self.ycmapscreen[0], self.ycmapscreen[1]) + plplot.plwind(0., 1., self.zrange[0], self.zrange[1]) + plplot.plbox("bc",0.0,0,"bc",0.0,0) + plplot.pllab("", "", "dBs") + plplot.plimage(colors, 0., 1., self.zrange[0], self.zrange[1], 0., 255., 0., 1., self.zrange[0], self.zrange[1]) + + return 1 + + def plotPowerProfile(self, power, ymin, ymax): + + if not(self.showGraph2): + return 0 + + ny = power.shape[0] + yscale = (ymax - ymin) / ny + y = ymin + yscale*numpy.arange(ny) + + plplot.plvpor(self.x2screen[0], self.x2screen[1], self.y2screen[0], self.y2screen[1]) + plplot.plwind(self.zrange[0], self.zrange[1], self.yrange[0], self.yrange[1]) + plplot.plbox("bcnst",0.0,0,"bc",0.0,0) + plplot.pllsty(2) + plplot.plbox("bcnstg",0.0,0,"bc",0.0,0) + plplot.pllsty(1) + plplot.pllab("dB", "", "Power Profile") + plplot.plline(power, y) + #plplot.plflush() + + return 1 + + def plotSpectrum(self, data, xmin=0.0, xmax=1.0, ymin=0.0, ymax=1.0, zmin=None, zmax=None): + """ + + """ + if zmin == None: zmin = numpy.nanmin(data) + if zmax == None: zmax = numpy.nanmax(data) + + if self.xrange == (): self.xrange = (xmin, xmax) + if self.yrange == (): self.yrange = (ymin, ymax) + if self.zrange == (): self.zrange = (zmin, zmax) + + plplot.pladv(self.subpage) + plplot.plschr(0.0,self.szchar) + + power = numpy.average(data, axis=0) + + self.plotPowerProfile(power, ymin, ymax) + self.plotColorbar() + + if self.xrangeIsTime: + plplot.pltimefmt("%H:%M") + + plplot.plvpor(self.xscreen[0], self.xscreen[1], self.yscreen[0], self.yscreen[1]) + plplot.plwind(self.xrange[0], self.xrange[1], self.yrange[0], self.yrange[1]) + plplot.plbox("bcnst",0.0,0,"bcnstv",0.0,0) + plplot.pllab(self.xlabel, self.ylabel, self.title) + plplot.plimage(data, xmin, xmax, ymin, ymax, zmin, zmax, xmin, xmax, ymin, ymax) + #plplot.plflush() + + def plotSpectrogram(self, data, xmin=0.0, xmax=1.0, ymin=0.0, ymax=1.0, zmin=0.0, zmax=1.0): + """ + + """ + + if zmin == None: zmin = numpy.nanmin(data) + if zmax == None: zmax = numpy.nanmax(data) + + if self.xrange == (): self.xrange = (xmin, xmax) + if self.yrange == (): self.yrange = (ymin, ymax) + if self.zrange == (): self.zrange = (zmin, zmax) + + plplot.pladv(self.subpage) + + plplot.plschr(0.0,self.szchar+0.3) + + power = numpy.average(data, axis=0) + + self.plotPowerProfile(power, ymin, ymax) + self.plotColorbar() + + if self.xrangeIsTime: + plplot.pltimefmt("%H:%M") + + plplot.plvpor(self.xscreen[0], self.xscreen[1], self.yscreen[0], self.yscreen[1]) + plplot.plwind(self.xrange[0], self.xrange[1], self.yrange[0], self.yrange[1]) + plplot.plbox("bcnst", 0.0, 0, "bcnstv", 0.0, 0) + + plplot.pllab(self.xlabel, self.ylabel, self.title) + plplot.plimage(data, xmin, xmax, ymin, ymax, zmin, zmax, xmin, xmax, ymin, ymax) + #plplot.plflush() + + +class PlotData(): + ''' + classdocs + ''' + + __INST_XSIZE = 300 + __INST_YSIZE = 280 + __BACKGR_XSIZE = 900 + __BACKGR_YSIZE = 150 + __SPACE = 100 + + def __init__(self): + ''' + Constructor + ''' + + self.nx = None + self.ny = None + self.xsize = None + self.ysize = None + + self.objGraphList = [] + + def getNumSubPages(self): + + nT0 = 0 + nT1 = 0 + nT2 = 0 + nT10 = 0 + nT11 = 0 + + for thisObj in self.objGraphList: + if thisObj.type == 0: + nT0 += 1 + continue + + if thisObj.type == 1: + nT1 += 1 + continue + + if thisObj.type == 2: + nT2 += 1 + continue + + if thisObj.type == 10: + nT10 += 1 + continue + + if thisObj.type == 11: + nT11 += 1 + continue + + nSpectrum = nT0 + nT2 + + if (nSpectrum > 0) and nT1*nT10*nT11 == 0: + + if nSpectrum in [1,2]: nx = 1 + elif nSpectrum in [3,4,5,6]: nx = 2 + else: nx = 3 + + if nSpectrum in [1]: ny = 1 + elif nSpectrum in [2,3,4]: ny = 2 + else: ny = 3 + + elif nT1 > 0 and nT0*nT10*nT11 == 0: + nx = 1 + ny = nT1 + + elif nT10 == nT11 and nT0*nT1 == 0: + nx = nT10 + ny = 2 + + else: + raise ValueError, "number of instantaneous and background graphics are not consistent" + + self.nx = nx + self.ny = ny + + return nx, ny + + def getSizeScreen(self): + + nx, ny = self.nx, self.ny + + if nx == None or ny == None: + raise ValueError, "The number of subpages have been set yet, please use the getNumSubPages method for this." + + nT0 = 0 + nT1 = 0 + nT2 = 0 + nT10 = 0 + nT11 = 0 + + for thisObj in self.objGraphList: + if thisObj.type == 0: + nT0 += 1 + continue + + if thisObj.type == 1: + nT1 += 1 + continue + + if thisObj.type == 2: + nT2 += 1 + continue + + if thisObj.type == 10: + nT10 += 1 + continue + + if thisObj.type == 11: + nT11 += 1 + continue + + if (nT0 > 0 or nT2 > 0) and nT1 > 0: + raise ValueError, "Different type of graphics have been selected" + + if nT0 > 0 or nT2 > 0: + xsize = ny*self.__INST_XSIZE + ysize = nx*self.__INST_YSIZE + + elif nT1 > 0: + xsize = nx*self.__BACKGR_XSIZE + ysize = ny*self.__BACKGR_YSIZE + + elif nT10 == nT11: + xsize = self.__INST_XSIZE + self.__BACKGR_XSIZE + self.__SPACE + ysize = nx*self.__BACKGR_YSIZE + else: + raise ValueError, "number of instantaneous and background graphics are not consistent" + + self.xsize = xsize + self.ysize = ysize + + return xsize, ysize + + def setup(self, sizescreen="800x600", save=False, gpath="", filename=""): + """ + """ + + self.sizecreen = sizescreen + self.save = save + self.gpath = gpath + self.filename = filename + + def addGraph(self, type=0, xlabel="", ylabel="", title="", showGraph2=False, showcmap=False, cmap="jet", windowsize=1.): + """ + type: This variable indicates the kind of graphics. Instantaneous data or background data + + 0: real instantaneous data, like a spectrum + 1: background data, like a spectrogram (RTI) + 2: complex instantaneous data, like cross-spectrum + + + windowsize: Float. Size of window. It can be:: + 1.0: full window (1) + 0.5: half window + 1.5: 1 1/2 window (1.5) + + If some graps have already been set with one graphic type the next ones should be of the same type + """ + + id = len(self.objGraphList) + + objGraph = Graph2() + objGraph.setup(id, type, windowsize, title, xlabel, ylabel, showGraph2, cmap, showcmap) + + self.objGraphList.append(objGraph) + + return id + + def getGraphFromId(self, id): + """ + + """ + if id >= len(self.objGraphList): + return None + + return self.objGraphList[id] + + def setRanges(self, id=0, xrange=(), yrange=(), zrange=()): + """ + + """ + thisGraphObj = self.getGraphFromId(id) + thisGraphObj.setmargins(xrange, yrange, zrange) + + + def addText(self, id, xpos=0, ypos=0, text=""): + """ + + """ + thisGraphObj = self.getGraphFromId(id) + + plplot.pladv(thisGraphObj.subpage) + plplot.plmtex("b", 5, xpos, ypos, text) + + def plotData(self, id, data, xmin=0.0, xmax=1.0, ymin=0.0, ymax=1.0, zmin=None, zmax=None): + + thisGraphObj = self.getGraphFromId(id) + + if thisGraphObj == None: + return 0 + + plplot.plcol0(1) + if thisGraphObj.type in [0,2]: + thisGraphObj.plotSpectrum(data, xmin, xmax, ymin, ymax, zmin, zmax) + return 1 + + if thisGraphObj.type in [1]: + thisGraphObj.plotSpectrogram(data, xmin, xmax, ymin, ymax, zmin, zmax) + return 1 + + return 0 + + def iniPlot(self, nx=None, ny=None): + """ + + """ + if nx == None or ny == None: + nx, ny = self.getNumSubPages() + + self.getSizeScreen() + + plplot.plsetopt("geometry", "%dx%d" %(self.xsize, self.ysize)) + plplot.plsdev("xcairo") + plplot.plscolbg(255,255,255) + plplot.plscol0(1,0,0,0) + plplot.plinit() + plplot.plssub(nx, ny) + plplot.pladv(0) + + #plplot.plspause(0) + + def end(self): + plplot.plflush() + plplot.plend() + +if __name__ == '__main__': + + import numpy + data = numpy.random.uniform(-50,50,(150,250)) + + objPlot = PlotData() + objPlot.addGraph(1, "Frequency", "Height", "Channel A") + objPlot.addGraph(1, "Frequency", "Height", "Channel B", showGraph2=True) + objPlot.addGraph(1, "Frequency", "Height", "Channel C", showcmap=True) +# +# objPlot.addGraph(1, "Frequency", "Height", "Cross A-B") +# objPlot.addGraph(1, "Frequency", "Height", "Cross A-C", showGraph2=True) +# objPlot.addGraph(1, "Frequency", "Height", "Cross A-D", showcmap=True) +# + objPlot.addGraph(1, "Frequency", "Height", "Channel D", showcmap=True, showGraph2=True) + objPlot.addGraph(1, "Frequency", "Height", "Cross A-E", showcmap=True, showGraph2=True) + + objPlot.iniPlot() + + for id in range(10): + objPlot.plotData(id, data) + + objPlot.end() \ No newline at end of file