##// END OF EJS Templates
Se agrega parametro de entrada 'show', por defecto (True) muestra la figuras, caso contrario (False) matplotlib no muestra la figuras
Se agrega parametro de entrada 'show', por defecto (True) muestra la figuras, caso contrario (False) matplotlib no muestra la figuras

File last commit:

r169:661bb8af254a
r342:de907111a31d
Show More
SpectraPlot.py
170 lines | 5.6 KiB | text/x-python | PythonLexer
'''
Created on Feb 7, 2012
@author $Author$
@version $Id$
'''
import numpy
import os
import sys
import plplot
import datetime
path = os.path.split(os.getcwd())[0]
sys.path.append(path)
from Graphics.BaseGraph import *
from Model.Spectra import Spectra
class Spectrum:
colorplotObj = None
def __init__(self, spectraObj, index):
self.__isPlotConfig = False
self.__isPlotIni = False
self.__xrange = None
self.__yrange = None
self.nsubplots = 0
self.indexPlot = index
self.spectraObj = spectraObj
def setup(self,indexPlot, nsubplots, winTitle='', colormap="br_green", showColorbar=False, showPowerProfile=False, XAxisAsTime=False):
"""
Crea un objeto colorPlot con las opciones seleccinoadas
"""
self.nsubplots = nsubplots
self.colorplotObj = PcolorPlot(indexPlot,
nsubplots,
winTitle,
colormap,
showColorbar,
showPowerProfile,
XAxisAsTime)
def createObjects(self,xmin,xmax,ymin,ymax,zmin,zmax,titleList,xlabelList,ylabelList):
"""
Configura cada subplot con los valores maximos y minimos incluyendo los subtitulos
"""
for index in range(self.nsubplots):
title = titleList[index]
xlabel = xlabelList[index]
ylabel = ylabelList[index]
subplot = index
self.colorplotObj.createObjects(subplot+1,xmin,xmax,ymin,ymax,zmin,zmax,title,xlabel,ylabel)
def initPlot(self):
"""
Configura cada subplot con los valores maximos y minimos incluyendo los subtitulos
"""
for index in range(self.nsubplots):
subplot = index
self.colorplotObj.iniPlot(subplot+1)
def plotData(self,
xmin=None,
xmax=None,
ymin=None,
ymax=None,
zmin=None,
zmax=None,
titleList=None,
xlabelList=None,
ylabelList=None,
winTitle='',
colormap = "br_green",
showColorbar = True,
showPowerProfile = True,
XAxisAsTime = False,
save = False,
channelList=[]):
if channelList == []:
channelList = numpy.arange(self.spectraObj.nChannels)
nsubplots = len(channelList)
nX = self.spectraObj.nFFTPoints
nY = self.spectraObj.nHeights
if self.spectraObj.noise == None:
noise = numpy.ones(nsubplots)
else:
noise = 10.*numpy.log10(self.spectraObj.noise[channelList])
datadB = 10.*numpy.log10(self.spectraObj.data_spc[channelList,:,:])
noisedB = 10.*numpy.log10(noise)
x = numpy.arange(nX)
y = self.spectraObj.heightList
indexPlot = self.indexPlot
if not(self.__isPlotConfig):
self.setup(indexPlot,
nsubplots,
winTitle,
colormap,
showColorbar,
showPowerProfile,
XAxisAsTime)
self.__isPlotConfig = True
if not(self.__isPlotIni):
if titleList == None:
titleList = []
for i in range(nsubplots):
titleList.append("Channel: %d - Noise: %.2f" %(i, noise[i]))
if xlabelList == None:
xlabelList = []
for i in range(nsubplots):
xlabelList.append("")
if ylabelList == None:
ylabelList = []
for i in range(nsubplots):
ylabelList.append("Range (Km)")
if xmin == None: xmin = x[0]
if xmax == None: xmax = x[-1]
if ymin == None: ymin = y[0]
if ymax == None: ymax = y[-1]
if zmin == None: zmin = datadB.min()
if zmax == None: zmax = datadB.max()
self.createObjects(xmin,xmax,ymin,ymax,zmin,zmax,titleList,xlabelList,ylabelList)
self.__isPlotIni = True
thisDatetime = datetime.datetime.fromtimestamp(self.spectraObj.m_BasicHeader.utc)
pltitle = "Self Spectra - Date: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
self.colorplotObj.setFigure(indexPlot)
self.colorplotObj.setNewPage(pltitle)
self.initPlot()
for channel in range(nsubplots):
data = datadB[channel,:,:]
subtitle = "Channel: %d - Noise: %.2f" %(channel, noise[channel])
self.colorplotObj.plot(channel+1, x, y, data, subtitle)
self.colorplotObj.refresh()
if save:
self.colorplotObj.setFigure(indexPlot)
path = "/home/roj-idl71/tmp/"
now = datetime.datetime.now().timetuple()
file = "spc_img%02d_%03d_%02d%02d%02d.png"%(indexPlot,now[7],now[3],now[4],now[5])
filename = os.path.join(path,file)
self.colorplotObj.savePlot(indexPlot, filename)
self.colorplotObj.closePage()