##// END OF EJS Templates
El grafico RTI para SpectraHeis considera parametro de tiempo local....
El grafico RTI para SpectraHeis considera parametro de tiempo local. En el driver se cambia el estilo de ploteo

File last commit:

r169:661bb8af254a
r349:340120f9e8f8
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()