@@ -61,7 +61,7 class Figure: | |||||
61 | def createFrames(self): |
|
61 | def createFrames(self): | |
62 | raise ValueError, "No implemented" |
|
62 | raise ValueError, "No implemented" | |
63 |
|
63 | |||
64 | def plot1DArray(self, data1D, x=None, channelList=None, xmin=None, xmax=None, minvalue=None, maxvalue=None, figtitle=None, save=False, gpath='./'): |
|
64 | def plot1DArray(self, data1D, x=None, channelList=None, xmin=None, xmax=None, minvalue=None, maxvalue=None, figuretitle=None, save=False, gpath='./'): | |
65 |
|
65 | |||
66 | nx, ny = data1D.shape |
|
66 | nx, ny = data1D.shape | |
67 |
|
67 | |||
@@ -71,10 +71,10 class Figure: | |||||
71 | if x == None: |
|
71 | if x == None: | |
72 | x = numpy.arange(data1D.size) |
|
72 | x = numpy.arange(data1D.size) | |
73 |
|
73 | |||
74 | if figtitle == None: |
|
74 | if figuretitle == None: | |
75 | self.figtitle = "" |
|
75 | self.figuretitle = "" | |
76 | else: |
|
76 | else: | |
77 | self.figtitle = figtitle |
|
77 | self.figuretitle = figuretitle | |
78 |
|
78 | |||
79 | if not(self.__isDriverOpen): |
|
79 | if not(self.__isDriverOpen): | |
80 | self.__openDriver() |
|
80 | self.__openDriver() | |
@@ -104,7 +104,6 class Figure: | |||||
104 | self.__initFigure() |
|
104 | self.__initFigure() | |
105 |
|
105 | |||
106 | for channel in channelList: |
|
106 | for channel in channelList: | |
107 | # frametitle = self.plotTitleDict[channel] |
|
|||
108 | frameObj = self.frameObjList[channel] |
|
107 | frameObj = self.frameObjList[channel] | |
109 | frameObj.init(xmin=self.xmin, |
|
108 | frameObj.init(xmin=self.xmin, | |
110 | xmax=self.xmax, |
|
109 | xmax=self.xmax, | |
@@ -134,6 +133,69 class Figure: | |||||
134 | # |
|
133 | # | |
135 | # self.colorplotObj.closePage() |
|
134 | # self.colorplotObj.closePage() | |
136 |
|
135 | |||
|
136 | ||||
|
137 | def plotPcolor(self,data, | |||
|
138 | x=None, | |||
|
139 | y=None, | |||
|
140 | channelList=None, | |||
|
141 | xmin=None, | |||
|
142 | xmax=None, | |||
|
143 | ymin=None, | |||
|
144 | ymax=None, | |||
|
145 | minvalue=None, | |||
|
146 | maxvalue=None, | |||
|
147 | figuretitle=None, | |||
|
148 | deltax=None, | |||
|
149 | save=False, | |||
|
150 | gpath='./'): | |||
|
151 | # data, | |||
|
152 | # currenttime, | |||
|
153 | # range, | |||
|
154 | # starttime, | |||
|
155 | # endtime, | |||
|
156 | # minrange, | |||
|
157 | # maxrange, | |||
|
158 | # minvalue, | |||
|
159 | # maxvalue, | |||
|
160 | # figuretitle, | |||
|
161 | # interval, | |||
|
162 | # save, | |||
|
163 | # gpath): | |||
|
164 | ||||
|
165 | if figuretitle == None: | |||
|
166 | self.figuretitle = "" | |||
|
167 | else: | |||
|
168 | self.figuretitle = figuretitle | |||
|
169 | ||||
|
170 | ||||
|
171 | ||||
|
172 | if not(self.__isDriverOpen): | |||
|
173 | self.__openDriver() | |||
|
174 | self.__isDriverOpen = True | |||
|
175 | ||||
|
176 | if not(self.__isConfig): | |||
|
177 | ||||
|
178 | self.setParms(data,x,y,xmin,xmax,ymin,ymax,minvalue,maxvalue,deltax) | |||
|
179 | ||||
|
180 | ||||
|
181 | ||||
|
182 | # if self.xmin == None: self.xmin = numpy.min(x) | |||
|
183 | # if self.xmax == None: self.xmax = numpy.max(x) | |||
|
184 | ||||
|
185 | ||||
|
186 | self.createFrames() | |||
|
187 | self.__isConfig = True | |||
|
188 | ||||
|
189 | if not(self.__isOutOfXRange(x)): | |||
|
190 | self.__changeXRange(x) | |||
|
191 | ||||
|
192 | if self.__isFigureOpen: | |||
|
193 | self.driverObj.closePage() | |||
|
194 | self.__isFigureOpen = False | |||
|
195 | ||||
|
196 | self.__initFigure() | |||
|
197 | ||||
|
198 | ||||
137 | class Frame: |
|
199 | class Frame: | |
138 | nplots = None |
|
200 | nplots = None | |
139 | plotObjList = [] |
|
201 | plotObjList = [] |
@@ -4,11 +4,11 import sys | |||||
4 | import plplot #condicional |
|
4 | import plplot #condicional | |
5 |
|
5 | |||
6 | class Driver: |
|
6 | class Driver: | |
7 |
def __init__(self,driver, idfigure, xw, yw, wintitle, overplot, color |
|
7 | def __init__(self,driver, idfigure, xw, yw, wintitle, overplot, colormap, colorbar): | |
8 | if driver == "plplot": |
|
8 | if driver == "plplot": | |
9 |
self.driver = PlplotDriver(idfigure, xw, yw, wintitle, overplot, color |
|
9 | self.driver = PlplotDriver(idfigure, xw, yw, wintitle, overplot, colormap, colorbar) | |
10 | elif driver == "mpl": |
|
10 | elif driver == "mpl": | |
11 | self.driver = MplDriver(idfigure, xw, yw, wintitle, overplot, colormap) |
|
11 | self.driver = MplDriver(idfigure, xw, yw, wintitle, overplot, colormap, colorbar) | |
12 | else: |
|
12 | else: | |
13 | raise ValueError, "The driver: %s is not defined"%driver |
|
13 | raise ValueError, "The driver: %s is not defined"%driver | |
14 |
|
14 | |||
@@ -17,7 +17,7 class PlplotDriver: | |||||
17 | __isDriverOpen = False |
|
17 | __isDriverOpen = False | |
18 | pldriver = None |
|
18 | pldriver = None | |
19 |
|
19 | |||
20 |
def __init__(self, idfigure, xw, yw, wintitle, overplot, color |
|
20 | def __init__(self, idfigure, xw, yw, wintitle, overplot, colormap, colorbar): | |
21 |
|
21 | |||
22 | if idfigure == None: |
|
22 | if idfigure == None: | |
23 | raise ValueError, 'idfigure input must be defined' |
|
23 | raise ValueError, 'idfigure input must be defined' | |
@@ -27,10 +27,8 class PlplotDriver: | |||||
27 | self.yw = yw |
|
27 | self.yw = yw | |
28 | self.wintitle = wintitle |
|
28 | self.wintitle = wintitle | |
29 | self.overplot = overplot |
|
29 | self.overplot = overplot | |
30 | self.colorbar = colorbar |
|
|||
31 | self.colormap = colormap |
|
30 | self.colormap = colormap | |
32 |
|
31 | self.colorbar = colorbar | ||
33 |
|
||||
34 |
|
32 | |||
35 | def setFigure(self): |
|
33 | def setFigure(self): | |
36 | """ |
|
34 | """ | |
@@ -99,6 +97,31 class PlplotDriver: | |||||
99 | plplot.plschr(0.0,szchar) |
|
97 | plplot.plschr(0.0,szchar) | |
100 | plplot.plmtex("t",-1., 0.5, 0.5, title) |
|
98 | plplot.plmtex("t",-1., 0.5, 0.5, title) | |
101 |
|
99 | |||
|
100 | def colorbar(self, minvalue, maxvalue, xpos, ypos): | |||
|
101 | # plplot.pladv(id) | |||
|
102 | # plplot.plschr(0.0,szchar-0.05) | |||
|
103 | xmin = 0; xmax = 1 | |||
|
104 | ymin = minvalue; ymax = maxvalue | |||
|
105 | plplot.plvpor(xpos[0], xpos[1], ypos[0], ypos[1]) | |||
|
106 | plplot.plwind(float(xmin), float(xmax), float(ymin), float(ymax)) | |||
|
107 | plplot.plbox("bc", 0.0, 0, "bcmtsv", 0.0, 0) | |||
|
108 | ||||
|
109 | data = numpy.arange(256) | |||
|
110 | data = numpy.reshape(data, (1,-1)) | |||
|
111 | ||||
|
112 | plplot.plimage(data, | |||
|
113 | float(xmin), | |||
|
114 | float(xmax), | |||
|
115 | float(ymin), | |||
|
116 | float(ymax), | |||
|
117 | 0., | |||
|
118 | 255., | |||
|
119 | float(xmin), | |||
|
120 | float(xmax), | |||
|
121 | float(ymin), | |||
|
122 | float(ymax)) | |||
|
123 | ||||
|
124 | ||||
102 | def plotBox(self, id, xpos, ypos, xmin, xmax, ymin, ymax, minvalue, maxvalue, xopt, yopt, szchar=0.6, xaxisastime = False, timefmt="%H:%M"): |
|
125 | def plotBox(self, id, xpos, ypos, xmin, xmax, ymin, ymax, minvalue, maxvalue, xopt, yopt, szchar=0.6, xaxisastime = False, timefmt="%H:%M"): | |
103 | """ |
|
126 | """ | |
104 | xopt, yopt: entradas que no se aplican en MPL |
|
127 | xopt, yopt: entradas que no se aplican en MPL | |
@@ -151,3 +174,8 class PlplotDriver: | |||||
151 | plplot.plline(x, y) |
|
174 | plplot.plline(x, y) | |
152 | plplot.plcol0(1) |
|
175 | plplot.plcol0(1) | |
153 | plplot.plbox("bcst", 0.0, 0, "bcst", 0.0, 0) |
|
176 | plplot.plbox("bcst", 0.0, 0, "bcst", 0.0, 0) | |
|
177 | ||||
|
178 | ||||
|
179 | class MplDriver: | |||
|
180 | def __init__(self): | |||
|
181 | pass No newline at end of file |
@@ -1,32 +1,224 | |||||
1 |
import nump |
|
1 | import nump | |
|
2 | import datetime | |||
|
3 | import time | |||
2 | from schainPlot import * |
|
4 | from schainPlot import * | |
3 | #from schainPlotLib import Driver |
|
5 | #from schainPlotLib import Driver | |
4 |
|
6 | |||
|
7 | ||||
|
8 | class RTIFigure: | |||
|
9 | overplot = 1 | |||
|
10 | xw = 700 | |||
|
11 | yw = 650 | |||
|
12 | showprofile = False | |||
|
13 | starttime = None | |||
|
14 | endtime = None | |||
|
15 | minrange = None | |||
|
16 | maxrange = None | |||
|
17 | minvalue = None | |||
|
18 | maxvalue = None | |||
|
19 | ||||
|
20 | ||||
|
21 | def __init__(self, idfigure, nframes, wintitle, driver, colormap="br_green", colorbar= True, showprofile=False): | |||
|
22 | self.idfigure = idfigure | |||
|
23 | self.nframes = nframes | |||
|
24 | self.wintitle = wintitle | |||
|
25 | self.colormap = colormap | |||
|
26 | self.colorbar = colorbar | |||
|
27 | self.showprofile = showprofile | |||
|
28 | self.driver = driver | |||
|
29 | self.drvObj = Driver(self.driver, self.idfigure, self.xw, self.yw, self.wintitle, self.overplot, self.colormap, self.colorbar) | |||
|
30 | self.drvObj.driver.setFigure() | |||
|
31 | ||||
|
32 | def getSubplots(self): | |||
|
33 | nrows = self.nframes | |||
|
34 | ncolumns = 1 | |||
|
35 | return nrows, ncolumns | |||
|
36 | ||||
|
37 | def setParms(self, data, x, y, xmin, xmax, ymin, ymax, minvalue, maxvalue, deltax): | |||
|
38 | ||||
|
39 | if minvalue == None: minvalue = numpy.min(data) | |||
|
40 | if maxvalue == None: maxvalue = numpy.max(data) | |||
|
41 | ||||
|
42 | utcdatetime = datetime.datetime.utcfromtimestamp(x) | |||
|
43 | startdatetime = datetime.datetime(thisDateTime.year,thisDateTime.month,thisDateTime.day,xmin.hour,xmin.minute, xmin.second) | |||
|
44 | enddatetime = datetime.datetime(thisDateTime.year,thisDateTime.month,thisDateTime.day,xmax.hour,xmax.minute, xmax.second) | |||
|
45 | deltatime = 0 | |||
|
46 | if timezone == "lt": deltatime = time.timezone | |||
|
47 | startTimeInSecs = time.mktime(startdatetime.timetuple()) - deltatime | |||
|
48 | endTimeInSecs = time.mktime(enddatetime.timetuple()) - deltatime | |||
|
49 | self.starttime = xmin | |||
|
50 | self.endtime = xmax | |||
|
51 | self.xmin = startTimeInSecs | |||
|
52 | self.xmax = self.xmin + interval | |||
|
53 | ||||
|
54 | ||||
|
55 | ||||
|
56 | if ymin == None: ymin = numpy.min(y) | |||
|
57 | if ymin == None: ymax = numpy.max(y) | |||
|
58 | ||||
|
59 | starttime = None | |||
|
60 | endtime = None | |||
|
61 | minrange = None | |||
|
62 | maxrange = None | |||
|
63 | minvalue = None | |||
|
64 | maxvalue = None | |||
|
65 | ||||
|
66 | ||||
|
67 | self.xmin = s | |||
|
68 | self.xmax = self.starttime + timeinterval | |||
|
69 | self.ymin = minrange | |||
|
70 | self.ymax = maxrange | |||
|
71 | self.minvalue = minvalue | |||
|
72 | self.maxvalue = maxvalue | |||
|
73 | ||||
|
74 | ||||
|
75 | def createFrames(self): | |||
|
76 | for frame in range(self.nframes): | |||
|
77 | frameObj = ScopeFrame(self.drvObj,frame + 1) | |||
|
78 | self.frameObjList.append(frameObj) | |||
|
79 | ||||
|
80 | class RTIFrame(Frame): | |||
|
81 | def __init__(self,drvObj,idframe,colorbar,showProfile): | |||
|
82 | self.drvObj = drvObj | |||
|
83 | self.idframe = idframe | |||
|
84 | self.nplots = 1 | |||
|
85 | ||||
|
86 | if showProfile: | |||
|
87 | self.nplots += 1 | |||
|
88 | ||||
|
89 | self.colorbar = colorbar | |||
|
90 | self.showprofile = showprofile | |||
|
91 | self.createPlots() | |||
|
92 | ||||
|
93 | def createPlots(self): | |||
|
94 | plotObjList = [] | |||
|
95 | ||||
|
96 | idplot = 0 | |||
|
97 | xi, yi, xw, yw = self.getScreenPos(idplot) | |||
|
98 | plotObj = RTIPlot(self.drvObj, self.idframe, idplot, xi, yi, xw, yw) | |||
|
99 | plotObjList.append(plotObj) | |||
|
100 | ||||
|
101 | if self.showprofile: | |||
|
102 | idplot = 1 | |||
|
103 | xi, yi, xw, yw = self.getScreenPos(idplot) | |||
|
104 | plotObj = Plot1D(self.drvObj, self.idframe, idplot, xi, yi, xw, yw) | |||
|
105 | plotObjList.append(plotObj) | |||
|
106 | ||||
|
107 | self.plotObjList = plotObjList | |||
|
108 | ||||
|
109 | def getScreenPosMainPlot(self):#cada Frame determina las coordenadas de los plots | |||
|
110 | xi = 0.07 | |||
|
111 | ||||
|
112 | if self.showprofile: | |||
|
113 | xw = 0.65 | |||
|
114 | ||||
|
115 | else: | |||
|
116 | xw = 0.9 | |||
|
117 | ||||
|
118 | if self.colorbar: | |||
|
119 | xw = xw - 0.06 | |||
|
120 | ||||
|
121 | yi = 0.20; yw = 0.75 | |||
|
122 | ||||
|
123 | return xi, yi, xw, yw | |||
|
124 | ||||
|
125 | def getScreenPosGraph1(self): | |||
|
126 | if self.colorbar: | |||
|
127 | xi = 0.65 + 0.05 | |||
|
128 | else: | |||
|
129 | xi = 0.9 + 0.05 | |||
|
130 | ||||
|
131 | xw = xi + 0.2 | |||
|
132 | ||||
|
133 | yi = 0.2; yw = 0.75 | |||
|
134 | ||||
|
135 | return xi, yi, xw, yw | |||
|
136 | ||||
|
137 | ||||
|
138 | class RTIPlot: | |||
|
139 | def __init__(self,drvObj, idframe, idplot, xi, yi, xw, yw): | |||
|
140 | self.drvObj = drvObj | |||
|
141 | self.idframe = idframe | |||
|
142 | self.idplot = idplot | |||
|
143 | self.xi = xi | |||
|
144 | self.yi = yi | |||
|
145 | self.xw = xw | |||
|
146 | self.yw = yw | |||
|
147 | ||||
|
148 | if self.colorbar: | |||
|
149 | cbxi = xw + 0.03 | |||
|
150 | cbxw = cbxi + 0.03 | |||
|
151 | cbyi = yi | |||
|
152 | cbyw = yw | |||
|
153 | self.cbxpos = [cbxi,cbxw] | |||
|
154 | self.cbypos = [cbyi,cbyw] | |||
|
155 | ||||
|
156 | self.xpos = [self.xi,self.xw] | |||
|
157 | self.ypos = [self.yi,self.yw] | |||
|
158 | self.xaxisastime = True | |||
|
159 | self.timefmt = "%H:%M" | |||
|
160 | self.xopt = "bcnstd" | |||
|
161 | self.yopt = "bcnstv" | |||
|
162 | ||||
|
163 | self.szchar = 1.0 | |||
|
164 | self.title = "Channel %d"%self.idframe | |||
|
165 | self.xlabel = "x-axis" | |||
|
166 | self.ylabel = "y-axis" | |||
|
167 | ||||
|
168 | def plotBox(self, xmin, xmax, ymin, ymax, minvalue, maxvalue): | |||
|
169 | self.xmin = xmin | |||
|
170 | self.xmax = xmax | |||
|
171 | self.ymin = ymin | |||
|
172 | self.ymax = ymax | |||
|
173 | self.minvalue = minvalue | |||
|
174 | self.maxvalue = maxvalue | |||
|
175 | ||||
|
176 | self.drvObj.driver.plotBox(self.idframe, | |||
|
177 | self.xpos, | |||
|
178 | self.ypos, | |||
|
179 | self.xmin, | |||
|
180 | self.xmax, | |||
|
181 | self.ymin, | |||
|
182 | self.ymax, | |||
|
183 | self.minvalue, | |||
|
184 | self.maxvalue, | |||
|
185 | self.xopt, | |||
|
186 | self.yopt, | |||
|
187 | self.szchar, | |||
|
188 | self.xaxisastime, | |||
|
189 | self.timefmt) | |||
|
190 | ||||
|
191 | self.drvObj.driver.setPlotLabels(self.xlabel, self.ylabel, self.title) | |||
|
192 | ||||
|
193 | if self.colorbar: | |||
|
194 | self.drvObj.driver.colorbar(minvalue, maxvalue, self.cbxpos,self.cbypos) | |||
|
195 | ||||
|
196 | ||||
|
197 | def plot(self): | |||
|
198 | pass | |||
|
199 | ||||
|
200 | ||||
|
201 | ||||
|
202 | ||||
|
203 | ||||
5 | class ScopeFigure(Figure): |
|
204 | class ScopeFigure(Figure): | |
6 | overplot = 0 |
|
205 | overplot = 0 | |
7 | xw = 700 |
|
206 | xw = 700 | |
8 | yw = 650 |
|
207 | yw = 650 | |
9 | colorbar = None |
|
208 | colorbar = None | |
10 | # frameObjList = [] |
|
|||
11 |
|
209 | |||
12 | def __init__(self,idfigure,nframes,wintitle,driver): |
|
210 | def __init__(self,idfigure,nframes,wintitle,driver): | |
13 | colormap = None |
|
211 | colormap = None | |
14 | colorbar = False |
|
212 | colorbar = False | |
15 | addGraph = 0 |
|
|||
16 | args=(addGraph, addGraph) |
|
|||
17 |
|
||||
18 |
|
213 | |||
19 | self.idfigure = idfigure |
|
214 | self.idfigure = idfigure | |
20 | self.nframes = nframes |
|
215 | self.nframes = nframes | |
21 | self.wintitle = wintitle |
|
216 | self.wintitle = wintitle | |
22 | # self.xw = |
|
|||
23 | # self.yw = |
|
|||
24 | # self.overplot = |
|
|||
25 | self.driver = driver |
|
|||
26 | self.colorbar = colorbar |
|
|||
27 | self.colormap = colormap |
|
|||
28 |
|
217 | |||
29 | self.drvObj = Driver(self.driver, self.idfigure, self.xw, self.yw, self.wintitle, self.overplot, self.colorbar, self.colormap) |
|
218 | self.colormap = colormap | |
|
219 | self.colorbar = colorbar | |||
|
220 | self.driver = driver | |||
|
221 | self.drvObj = Driver(self.driver, self.idfigure, self.xw, self.yw, self.wintitle, self.overplot, self.colormap, self.colorbar) | |||
30 | self.drvObj.driver.setFigure() |
|
222 | self.drvObj.driver.setFigure() | |
31 |
|
223 | |||
32 | # Figure.__init__(self,idfigure,nframes,wintitle,self.xw,self.yw,self.overplot,driver,colorbar,colormap,*args) |
|
224 | # Figure.__init__(self,idfigure,nframes,wintitle,self.xw,self.yw,self.overplot,driver,colorbar,colormap,*args) |
General Comments 0
You need to be logged in to leave comments.
Login now