##// END OF EJS Templates
Last Change Test
Last Change Test

File last commit:

r169:661bb8af254a
r263:4117168188c0
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()