##// END OF EJS Templates
La opcion nombre de graficos ha sido añadida a los modulos de VoltagePlot y SpectraPlot
Miguel Valdez -
r56:b3cb75f14758
parent child
Show More
@@ -1,173 +1,174
1 1 '''
2 2 Created on Feb 7, 2012
3 3
4 4 @author $Author$
5 5 @version $Id$
6 6 '''
7 7
8 8 import os, sys
9 9 import numpy
10 10 import datetime
11 11 import plplot
12 12
13 13 path = os.path.split(os.getcwd())[0]
14 14 sys.path.append(path)
15 15
16 16 from Graphics.BaseGraph import *
17 17 from Model.Spectra import Spectra
18 18
19 19 class Spectrum():
20 20
21 21 def __init__(self, Spectra, index=0):
22 22
23 23 """
24 24
25 25 Inputs:
26 26
27 27 type: "power" ->> Potencia
28 28 "iq" ->> Real + Imaginario
29 29 """
30 30
31 31 self.__isPlotConfig = False
32 32
33 33 self.__isPlotIni = False
34 34
35 35 self.__xrange = None
36 36
37 37 self.__yrange = None
38 38
39 39 self.nGraphs = 0
40 40
41 41 self.indexPlot = index
42 42
43 43 self.graphObjList = []
44 44
45 45 self.m_Spectra = Spectra
46 46
47 47
48 48 def __addGraph(self, subpage, title="", xlabel="", ylabel="", showColorbar=False, showPowerProfile=True, XAxisAsTime=False):
49 49
50 50 graphObj = ColorPlot()
51 51 graphObj.setup(subpage,
52 52 title,
53 53 xlabel,
54 54 ylabel,
55 55 showColorbar=showColorbar,
56 56 showPowerProfile=showPowerProfile,
57 57 XAxisAsTime=XAxisAsTime)
58 58
59 59 self.graphObjList.append(graphObj)
60 60
61 61
62 62 def setup(self, titleList=None, xlabelList=None, ylabelList=None, showColorbar=False, showPowerProfile=True, XAxisAsTime=False):
63 63
64 64 nChan = int(self.m_Spectra.m_SystemHeader.numChannels)
65 65 channels = range(nChan)
66 66
67 67 myXlabel = "Radial Velocity (m/s)"
68 68 myYlabel = "Range (km)"
69 69
70 70 for i in channels:
71 71 if titleList != None:
72 72 myTitle = titleList[i]
73 73 myXlabel = xlabelList[i]
74 74 myYlabel = ylabelList[i]
75 75
76 76 # if self.m_Spectra.m_NoiseObj != None:
77 77 # noise = '%4.2fdB' %(self.m_Spectra.m_NoiseObj[i])
78 78 # else:
79 79 noise = '--'
80 80
81 81 myTitle = "Channel: %d - Noise: %s" %(i, noise)
82 82
83 83 self.__addGraph(i+1,
84 84 title=myTitle,
85 85 xlabel=myXlabel,
86 86 ylabel=myYlabel,
87 87 showColorbar=showColorbar,
88 88 showPowerProfile=showPowerProfile,
89 89 XAxisAsTime=XAxisAsTime)
90 90
91 91 self.nGraphs = nChan
92 92 self.__isPlotConfig = True
93 93
94 def iniPlot(self):
94 def iniPlot(self, winTitle=""):
95 95
96 96 nx = int(numpy.sqrt(self.nGraphs)+1)
97 97 #ny = int(self.nGraphs/nx)
98 98
99 99 plplot.plsstrm(self.indexPlot)
100 plplot.plparseopts([winTitle], plplot.PL_PARSE_FULL)
100 101 plplot.plsetopt("geometry", "%dx%d" %(300*nx, 240*nx))
101 102 plplot.plsdev("xwin")
102 103 plplot.plscolbg(255,255,255)
103 104 plplot.plscol0(1,0,0,0)
104 105 plplot.plinit()
105 106 plplot.plspause(False)
106 107 plplot.pladv(0)
107 108 plplot.plssub(nx, nx)
108 109
109 110 self.__nx = nx
110 111 self.__ny = nx
111 112 self.__isPlotIni = True
112 113
113 114
114 def plotData(self, xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, titleList=None, xlabelList=None, ylabelList=None, showColorbar=False, showPowerProfile=True, XAxisAsTime=False):
115 def plotData(self, xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, titleList=None, xlabelList=None, ylabelList=None, showColorbar=False, showPowerProfile=True, XAxisAsTime=False, winTitle="Spectra"):
115 116
116 117 if not(self.__isPlotConfig):
117 118 self.setup(titleList,
118 119 xlabelList,
119 120 ylabelList,
120 121 showColorbar,
121 122 showPowerProfile,
122 123 XAxisAsTime)
123 124
124 125 if not(self.__isPlotIni):
125 126 self.iniPlot()
126 127
127 128 plplot.plsstrm(self.indexPlot)
128 129
129 130 data = 10.*numpy.log10(self.m_Spectra.data_spc)
130 131
131 132 nX, nY, nChan = numpy.shape(data)
132 133
133 134 x = numpy.arange(nX)
134 135 y = self.m_Spectra.heights
135 136
136 137 thisDatetime = datetime.datetime.fromtimestamp(self.m_Spectra.m_BasicHeader.utc)
137 138 txtDate = "Self Spectra - Date: %s" %(thisDatetime.strftime("%d-%b-%Y %H:%M:%S"))
138 139
139 140 if xmin == None: xmin = x[0]
140 141 if xmax == None: xmax = x[-1]
141 142 if ymin == None: ymin = y[0]
142 143 if ymax == None: ymax = y[-1]
143 144 if zmin == None: zmin = numpy.nanmin(abs(data))
144 145 if zmax == None: zmax = numpy.nanmax(abs(data))
145 146
146 147 plplot.plbop()
147 148
148 149 plplot.plssub(self.__nx, self.__ny)
149 150 for i in range(self.nGraphs):
150 151 self.graphObjList[i].iniSubpage()
151 152 self.graphObjList[i].plotData(data[i,:,:],
152 153 x,
153 154 y,
154 155 xmin=xmin,
155 156 xmax=xmax,
156 157 ymin=ymin,
157 158 ymax=ymax,
158 159 zmin=zmin,
159 160 zmax=zmax)
160 161
161 162 plplot.plssub(1,0)
162 163 plplot.pladv(0)
163 164 plplot.plvpor(0., 1., 0., 1.)
164 165 plplot.plmtex("t",-1., 0.5, 0.5, txtDate)
165 166 plplot.plflush()
166 167 plplot.pleop()
167 168
168 169 def end(self):
169 170 plplot.plend()
170 171
171 172
172 173 if __name__ == '__main__':
173 174 pass No newline at end of file
@@ -1,181 +1,182
1 1 '''
2 2 Created on Feb 7, 2012
3 3
4 4 @author $Author$
5 5 @version $Id$
6 6 '''
7 7 import os, sys
8 8 import numpy
9 9 import plplot
10 10
11 11 path = os.path.split(os.getcwd())[0]
12 12 sys.path.append(path)
13 13
14 14 from Graphics.BaseGraph import *
15 15 from Model.Voltage import Voltage
16 16
17 17 class Osciloscope():
18 18
19 19 def __init__(self, Voltage, index=0):
20 20
21 21 """
22 22
23 23 Inputs:
24 24
25 25 type: "power" ->> Potencia
26 26 "iq" ->> Real + Imaginario
27 27 """
28 28
29 29 self.__isPlotConfig = False
30 30
31 31 self.__isPlotIni = False
32 32
33 33 self.__xrange = None
34 34
35 35 self.__yrange = None
36 36
37 37 self.m_Voltage = None
38 38
39 39 self.nGraphs = 0
40 40
41 41 self.indexPlot = index
42 42
43 43 self.graphObjList = []
44 44
45 45 self.m_Voltage = Voltage
46 46
47 47
48 48 def __addGraph(self, subpage, title="", xlabel="", ylabel="", XAxisAsTime=False):
49 49
50 50 graphObj = LinearPlot()
51 51 graphObj.setup(subpage, title="", xlabel="", ylabel="", XAxisAsTime=False)
52 52 #graphObj.setScreenPos()
53 53
54 54 self.graphObjList.append(graphObj)
55 55
56 56 del graphObj
57 57
58 58 # def setXRange(self, xmin, xmax):
59 59 # self.__xrange = (xmin, xmax)
60 60 #
61 61 # def setYRange(self, ymin, ymax):
62 62 # self.__yrange = (ymin, ymax)
63 63
64 64
65 65 def setup(self, titleList=None, xlabelList=None, ylabelList=None, XAxisAsTime=False):
66 66
67 67 nChan = int(self.m_Voltage.m_SystemHeader.numChannels)
68 68
69 69 myTitle = ""
70 70 myXlabel = ""
71 71 myYlabel = ""
72 72
73 73 for i in range(nChan):
74 74 if titleList != None:
75 75 myTitle = titleList[i]
76 76 myXlabel = xlabelList[i]
77 77 myYlabel = ylabelList[i]
78 78
79 79 self.__addGraph(i+1, title=myTitle, xlabel=myXlabel, ylabel=myYlabel, XAxisAsTime=XAxisAsTime)
80 80
81 81 self.nGraphs = nChan
82 82 self.__isPlotConfig = True
83 83
84 def iniPlot(self):
84 def iniPlot(self, winTitle=""):
85 85
86 86 plplot.plsstrm(self.indexPlot)
87 plplot.plparseopts([winTitle], plplot.PL_PARSE_FULL)
87 88 plplot.plsetopt("geometry", "%dx%d" %(700, 115*self.nGraphs))
88 89 plplot.plsdev("xwin")
89 90 plplot.plscolbg(255,255,255)
90 91 plplot.plscol0(1,0,0,0)
91 92 plplot.plinit()
92 93 plplot.plspause(False)
93 94 plplot.plssub(1, self.nGraphs)
94 95
95 96 self.__isPlotIni = True
96 97
97 def plotData(self, xmin=None, xmax=None, ymin=None, ymax=None, idProfile=None, titleList=None, xlabelList=None, ylabelList=None, XAxisAsTime=False, type='iq'):
98 def plotData(self, xmin=None, xmax=None, ymin=None, ymax=None, idProfile=None, titleList=None, xlabelList=None, ylabelList=None, XAxisAsTime=False, type='iq', winTitle="Voltage"):
98 99
99 100 if idProfile != None and idProfile != self.m_Voltage.idProfile:
100 101 return
101 102
102 103 if not(self.__isPlotConfig):
103 104 self.setup(titleList, xlabelList, ylabelList, XAxisAsTime)
104 105
105 106 if not(self.__isPlotIni):
106 107 self.iniPlot()
107 108
108 109 plplot.plsstrm(self.indexPlot)
109 110
110 111 data = self.m_Voltage.data
111 112
112 113 x = self.m_Voltage.heights
113 114
114 115 if xmin == None: xmin = x[0]
115 116 if xmax == None: xmax = x[-1]
116 117 if ymin == None: ymin = numpy.nanmin(abs(data))
117 118 if ymax == None: ymax = numpy.nanmax(abs(data))
118 119
119 120 plplot.plbop()
120 121 for i in range(self.nGraphs):
121 122 y = data[:,i]
122 123
123 124 self.graphObjList[i].iniSubpage()
124 125 self.graphObjList[i].plotComplexData(x, y, xmin, xmax, ymin, ymax, 8, type)
125 126
126 127 plplot.plflush()
127 128 plplot.pleop()
128 129
129 130 def end(self):
130 131 plplot.plend()
131 132
132 133 class VoltagePlot(object):
133 134 '''
134 135 classdocs
135 136 '''
136 137
137 138 __m_Voltage = None
138 139
139 140 def __init__(self, m_Voltage):
140 141 '''
141 142 Constructor
142 143 '''
143 144 self.__m_Voltage = m_Voltage
144 145
145 146 def setup(self):
146 147 pass
147 148
148 149 def addGraph(self, type, xrange=None, yrange=None, zrange=None):
149 150 pass
150 151
151 152 def plotData(self):
152 153 pass
153 154
154 155 if __name__ == '__main__':
155 156
156 157 import numpy
157 158
158 159 plplot.plsetopt("geometry", "%dx%d" %(450*2, 200*2))
159 160 plplot.plsdev("xcairo")
160 161 plplot.plscolbg(255,255,255)
161 162 plplot.plscol0(1,0,0,0)
162 163 plplot.plinit()
163 164 plplot.plssub(1, 2)
164 165
165 166 nx = 64
166 167 ny = 100
167 168
168 169 data = numpy.random.uniform(-50,50,(nx,ny))
169 170
170 171 baseObj = RTI()
171 172 baseObj.setup(1, "Spectrum", "Frequency", "Range", "br_green", False, False)
172 173 baseObj.plotData(data)
173 174
174 175 data = numpy.random.uniform(-50,50,(nx,ny))
175 176
176 177 base2Obj = RTI()
177 178 base2Obj.setup(2, "Spectrum", "Frequency", "Range", "br_green", True, True)
178 179 base2Obj.plotData(data)
179 180
180 181 plplot.plend()
181 182 exit(0) No newline at end of file
General Comments 0
You need to be logged in to leave comments. Login now