CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes | Private Attributes
matplotRender.matplotRender Class Reference

Public Member Functions

def __init__
 
def drawHTTPstring
 
def drawInteractive
 
def drawPNG
 
def plotInst_RunLS
 
def plotPeakPerday_Time
 
def plotPerdayX_Time
 
def plotSumX_Fill
 
def plotSumX_Run
 
def plotSumX_Time
 

Public Attributes

 colormap
 

Private Attributes

 __canvas
 
 __fig
 

Detailed Description

Definition at line 45 of file matplotRender.py.

Constructor & Destructor Documentation

def matplotRender.matplotRender.__init__ (   self,
  fig 
)

Definition at line 46 of file matplotRender.py.

46 
47  def __init__(self,fig):
48  self.__fig=fig
49  self.__canvas=''
50  self.colormap={}
51  self.colormap['Delivered']='r'
52  self.colormap['Recorded']='b'
53  self.colormap['Effective']='g'
54  self.colormap['Max Inst']='r'

Member Function Documentation

def matplotRender.matplotRender.drawHTTPstring (   self)

Definition at line 542 of file matplotRender.py.

References matplotRender.matplotRender.__canvas, and matplotRender.matplotRender.__fig.

543  def drawHTTPstring(self):
544  self.__canvas=CanvasBackend(self.__fig)
545  cherrypy.response.headers['Content-Type']='image/png'
546  buf=StringIO()
547  self.__canvas.print_png(buf)
548  return buf.getvalue()
def matplotRender.matplotRender.drawInteractive (   self)

Definition at line 553 of file matplotRender.py.

References matplotRender.matplotRender.__canvas, matplotRender.matplotRender.__fig, and python.timeUnitHelper.pack().

554  def drawInteractive(self):
555  if batchonly:
556  print 'interactive mode is not available for your setup, exit'
557  sys.exit()
558  self.__canvas=CanvasBackend(self.__fig,master=root)
559  self.__canvas.show()
560  self.__canvas.get_tk_widget().pack(side=Tk.TOP,fill=Tk.BOTH,expand=1)
561  toolbar=NavigationToolbar2TkAgg(self.__canvas,root)
562  toolbar.update()
563  self.__canvas._tkcanvas.pack(side=Tk.TOP,fill=Tk.BOTH,expand=1)
564  button = Tk.Button(master=root,text='Quit',command=sys.exit)
565  button.pack(side=Tk.BOTTOM)
Tk.mainloop()
def matplotRender.matplotRender.drawPNG (   self,
  filename 
)

Definition at line 549 of file matplotRender.py.

References matplotRender.matplotRender.__canvas, and matplotRender.matplotRender.__fig.

550  def drawPNG(self,filename):
551  self.__canvas=CanvasBackend(self.__fig)
552  self.__canvas.print_figure(filename)
def matplotRender.matplotRender.plotInst_RunLS (   self,
  rawxdata,
  rawydata,
  nticks = 6 
)
Input: rawxdata [run,fill,norbit,starttime,stoptime,totalls,ncmsls]
       rawydata {label:[instlumi]}

Definition at line 451 of file matplotRender.py.

References matplotRender.matplotRender.colormap, python.multivaluedict.dict, and max().

452  def plotInst_RunLS(self,rawxdata,rawydata,nticks=6):
453  '''
454  Input: rawxdata [run,fill,norbit,starttime,stoptime,totalls,ncmsls]
455  rawydata {label:[instlumi]}
456  '''
457  runnum=rawxdata[0]
458  fill=rawxdata[1]
459  norbit=rawxdata[2]
460  starttime=rawxdata[3]
461  stoptime=rawxdata[4]
462  totalls=rawxdata[-2]
463  ncmsls=rawxdata[-1]
464  peakinst=max(rawydata['Delivered'])
465  lslength=float(norbit)*3564*25.0e-9
466  totaldelivered=sum(rawydata['Delivered'])*lslength
467  totalrecorded=sum(rawydata['Recorded'])*lslength
468  xpoints=range(1,totalls+1)
469  #print len(xpoints)
470  ypoints={}
471  ymax={}
472  for ylabel,yvalue in rawydata.items():
473  ypoints[ylabel]=yvalue
474  ymax[ylabel]=max(yvalue)
475  left=0.15
476  width=0.7
477  bottom=0.1
478  height=0.65
479  bottom_h=bottom+height
480  rect_scatter=[left,bottom,width,height]
481  rect_table=[left,bottom_h,width,0.25]
482 
483  nullfmt=matplotlib.ticker.NullFormatter()
484  nullloc=matplotlib.ticker.NullLocator()
485  axtab=self.__fig.add_axes(rect_table,frameon=False)
486  axtab.set_axis_off()
487  axtab.xaxis.set_major_formatter(nullfmt)
488  axtab.yaxis.set_major_formatter(nullfmt)
489  axtab.xaxis.set_major_locator(nullloc)
490  axtab.yaxis.set_major_locator(nullloc)
491 
492  ax=self.__fig.add_axes(rect_scatter)
493 
494  majorLoc=matplotlib.ticker.LinearLocator(numticks=nticks)
495  minorLoc=matplotlib.ticker.LinearLocator(numticks=nticks*4)
496  ax.set_xlabel(r'LS',position=(0.96,0))
497  ax.set_ylabel(r'L $\mu$b$^{-1}$s$^{-1}$',position=(0,0.9))
498  ax.xaxis.set_major_locator(majorLoc)
499  ax.xaxis.set_minor_locator(minorLoc)
500  ax.set_xbound(lower=xpoints[0],upper=xpoints[-1])
501  xticklabels=ax.get_xticklabels()
502  for tx in xticklabels:
503  tx.set_horizontalalignment('right')
504  ax.grid(True)
505  keylist=ypoints.keys()
506  keylist.sort()
507  legendlist=[]
508 
509  for ylabel in keylist:
510  cl='k'
511  if self.colormap.has_key(ylabel):
512  cl=self.colormap[ylabel]
513  ax.plot(xpoints,ypoints[ylabel],'.',label=ylabel,color=cl)
514  legendlist.append(ylabel)
515  #ax.axhline(0,color='green',linewidth=0.2)
516  ax.axvline(xpoints[ncmsls-1],color='green',linewidth=0.2)
517 
518  denomitor=1.0
519  unitstring='/$\mu$b'
520  if totaldelivered>=1.0e3 and totaldelivered<1.0e06:
521  denomitor=1.0e3
522  unitstring='/nb'
523  elif totaldelivered>=1.0e6 and totaldelivered<1.0e9:
524  denomitor=1.0e6
525  unitstring='/pb'
526  elif totaldelivered>=1.0e9 and totaldelivered<1.0e12:
527  denomitor=1.0e9
528  unitstring='/fb'
529  elif totaldelivered>=1.0e12 and totaldelivered<1.0e15:
530  denomitor=1.0e12
531  unitstring='/ab'
532  colLabels=('run','fill','max inst(/$\mu$b/s)','delivered('+unitstring+')','recorded('+unitstring+')')
533  cellText=[[str(runnum),str(fill),'%.3f'%(peakinst),'%.3f'%(totaldelivered/denomitor),'%.3f'%(totalrecorded/denomitor)]]
534 
535  sumtable=axtab.table(cellText=cellText,colLabels=colLabels,colWidths=[0.12,0.1,0.27,0.27,0.27],cellLoc='center',loc='center')
536  trans=matplotlib.transforms.BlendedGenericTransform(ax.transData,ax.transAxes)
537  axtab.add_table(sumtable)
538 
539  ax.text(xpoints[0],1.02,starttime[0:17],transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
540  ax.text(xpoints[ncmsls-1],1.02,stoptime[0:17],transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
541  ax.legend(tuple(legendlist),loc='upper right',numpoints=1)
const T & max(const T &a, const T &b)
def matplotRender.matplotRender.plotPeakPerday_Time (   self,
  daydict,
  minTime,
  maxTime,
  nticks = 6,
  annotateBoundaryRunnum = False,
  yscale = 'linear' 
)
Input: daydict={}#{day:[run,lsnum,instlumi]}

Definition at line 361 of file matplotRender.py.

References matplotRender.matplotRender.colormap, and python.multivaluedict.dict.

362  def plotPeakPerday_Time(self,daydict,minTime,maxTime,nticks=6,annotateBoundaryRunnum=False,yscale='linear'):
363  '''
364  Input: daydict={}#{day:[run,lsnum,instlumi]}
365  '''
366  xpoints=[]
367  ypoints=[]
368  legendlist=[]
369  days=daydict.keys()
370  days.sort()
371  beginfo=str(daydict[days[0]][0])+':'+str(daydict[days[0]][1])
372  endinfo=str(daydict[days[-1]][0])+':'+str(daydict[days[-1]][1])
373  maxinfo=''
374  ymax=0.0
375  xmax=0
376  minday=days[0]
377  maxday=days[-1]
378  minvar=0.1
379  for day in range(minday,maxday+1):
380  xpoints.append(day)
381  if not daydict.has_key(day):
382  ypoints.append(0.0)
383  continue
384  daymaxdata=daydict[day]
385  ypoints.append(daymaxdata[2])
386  if daydict[day][2]>ymax:
387  ymax=daydict[day][2]
388  xmax=day
389  runmax=daydict[day][0]
390  lsmax=daydict[day][1]
391  maxinfo=str(runmax)+':'+str(lsmax)
392  denomitor=1.0
393  unitstring='$\mu$b$^{-1}$s$^{-1}$'
394  if ymax>=1.0e3 and ymax<1.0e06:
395  denomitor=1.0e3
396  unitstring='nb$^{-1}$s$^{-1}$'
397  elif ymax>=1.0e6 and ymax<1.0e9:
398  denomitor=1.0e6
399  unitstring='pb$^{-1}$s$^{-1}$'
400  elif ymax>=1.0e9 and ymax<1.0e12:
401  denomitor=1.0e9
402  unitstring='fb$^{-1}$s$^{-1}$'
403  elif ymax>=1.0e12 and ymax<1.0e15:
404  denomitor=1.0e12
405  unitstring='ab$^{-1}$s$^{-1}$'
406 
407  ax=self.__fig.add_subplot(111)
408  if yscale=='linear':
409  ax.set_yscale('linear')
410  elif yscale=='log':
411  ax.set_yscale('log')
412  for i,v in enumerate(ypoints):
413  if v<minvar:
414  ypoints[i]=minvar
415  else:
416  raise 'unsupported yscale ',yscale
417  dateFmt=matplotlib.dates.DateFormatter('%d/%m')
418  majorLoc=matplotlib.ticker.LinearLocator(numticks=nticks)
419  minorLoc=matplotlib.ticker.LinearLocator(numticks=nticks*4)
420  ax.xaxis.set_major_formatter(dateFmt)
421  ax.set_xlabel(r'Date',position=(0.84,0))
422  ax.set_ylabel(r'L '+unitstring,position=(0,0.9))
423  ax.xaxis.set_major_locator(majorLoc)
424  ax.xaxis.set_minor_locator(minorLoc)
425  xticklabels=ax.get_xticklabels()
426  for tx in xticklabels:
427  tx.set_horizontalalignment('right')
428  ax.grid(True)
429  cl=self.colormap['Max Inst']
430  #print 'xpoints ',xpoints
431  #print 'ypoints ',ypoints
432  #print 'maxinfo ',maxinfo
433  #print 'beginfo ',beginfo
434  #print 'endinfo ',endinfo
435  ax.plot(xpoints,[y/denomitor for y in ypoints],label='Max Inst',color=cl,drawstyle='steps')
436  legendlist.append('Max Inst %.2f'%(ymax/denomitor)+' '+unitstring)
437  ax.legend(tuple(legendlist),loc='upper left')
438  ax.set_xbound(lower=matplotlib.dates.date2num(minTime),upper=matplotlib.dates.date2num(maxTime))
439  if annotateBoundaryRunnum:
440  #annotations
441  trans=matplotlib.transforms.BlendedGenericTransform(ax.transData,ax.transAxes)
442  ax.text(xpoints[0],1.025,beginfo,transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
443  ax.text(xpoints[-1],1.025,endinfo,transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
444  ax.annotate(maxinfo,xy=(xmax,ymax),xycoords='data',xytext=(0,13),textcoords='offset points',arrowprops=dict(facecolor='green',shrink=0.05),size='x-small',horizontalalignment='center',color='green',bbox=dict(facecolor='white'))
445  yearStr=minTime.strftime('%Y')
446  firstimeStr=minTime.strftime('%b %d %H:%M')
447  lasttimeStr=maxTime.strftime('%b %d %H:%M')
448  ax.set_title('Peak Luminosity/Day '+yearStr+' ('+firstimeStr+' UTC - '+lasttimeStr+' UTC)',size='small',family='fantasy')
449  self.__fig.autofmt_xdate(bottom=0.18,rotation=0)
450  self.__fig.subplots_adjust(bottom=0.1,left=0.1)
def matplotRender.matplotRender.plotPerdayX_Time (   self,
  days,
  databyday,
  minTime,
  maxTime,
  boundaryInfo = [],
  nticks = 6,
  annotateBoundaryRunnum = False,
  yscale = 'linear' 
)
input
    databyday {'Delivered':[lumiperday]}
    boundaryInfo [[begintime,begininfo],[endtime,endinfo]]

Definition at line 283 of file matplotRender.py.

References matplotRender.matplotRender.colormap, python.multivaluedict.dict, max(), and min.

284  def plotPerdayX_Time(self,days,databyday,minTime,maxTime,boundaryInfo=[],nticks=6,annotateBoundaryRunnum=False,yscale='linear'):
285  '''input
286  databyday {'Delivered':[lumiperday]}
287  boundaryInfo [[begintime,begininfo],[endtime,endinfo]]
288  '''
289  ax=self.__fig.add_subplot(111)
290  t=max(databyday['Delivered'])
291  minvar=min([x for x in databyday['Recorded'] if x>0]) #used only for log scale
292  maxvalues={}
293  keylist=databyday.keys()
294  keylist.sort()
295  for k in keylist:
296  maxvalues[k]=max(databyday[k])
297 
298  if yscale=='linear':
299  ax.set_yscale('linear')
300  elif yscale=='log':
301  ax.set_yscale('log')
302  for k in keylist:
303  for i,v in enumerate(databyday[k]):
304  if v<minvar:
305  databyday[k][i]=minvar
306  else:
307  raise 'unsupported yscale ',yscale
308  dateFmt=matplotlib.dates.DateFormatter('%d/%m')
309  majorLoc=matplotlib.ticker.LinearLocator(numticks=nticks)
310  minorLoc=matplotlib.ticker.LinearLocator(numticks=nticks*4)
311  ax.xaxis.set_major_formatter(dateFmt)
312  ax.set_xlabel(r'Date',position=(0.84,0))
313  ax.xaxis.set_major_locator(majorLoc)
314  ax.xaxis.set_minor_locator(minorLoc)
315  xticklabels=ax.get_xticklabels()
316  for tx in xticklabels:
317  tx.set_horizontalalignment('right')
318  ax.grid(True)
319  legendlist=[]
320 
321  denomitor=1.0
322  unitstring='$\mu$b$^{-1}$'
323  if t>=1.0e3 and t<1.0e06:
324  denomitor=1.0e3
325  unitstring='nb$^{-1}$'
326  elif t>=1.0e6 and t<1.0e9:
327  denomitor=1.0e6
328  unitstring='pb$^{-1}$'
329  elif t>=1.0e9 and t<1.0e12:
330  denomitor=1.0e9
331  unitstring='fb$^{-1}$'
332  elif t>=1.0e12 and t<1.0e15:
333  denomitor=1.0e12
334  unitstring='ab$^{-1}$'
335 
336  ax.set_ylabel(r'L '+unitstring,position=(0,0.9))
337  for ylabel in keylist:
338  cl='k'
339  if self.colormap.has_key(ylabel):
340  cl=self.colormap[ylabel]
341  ax.plot(days,[y/denomitor for y in databyday[ylabel]],label=ylabel,color=cl,drawstyle='steps')
342  legendlist.append(ylabel+' Max '+'%.2f'%(maxvalues[ylabel]/denomitor)+' '+unitstring)
343  ax.legend(tuple(legendlist),loc='upper left')
344  ax.set_xbound(lower=matplotlib.dates.date2num(minTime),upper=matplotlib.dates.date2num(maxTime))
345  if annotateBoundaryRunnum:
346  if len(boundaryInfo)!=0:
347  begtime=boundaryInfo[0][0]
348  beginfo=boundaryInfo[0][1]
349  endtime=boundaryInfo[1][0]
350  endinfo=boundaryInfo[1][1]
351  #annotations
352  trans=matplotlib.transforms.BlendedGenericTransform(ax.transData,ax.transAxes)
353  ax.text(matplotlib.dates.date2num(begtime),1.025,beginfo,transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
354  ax.text(matplotlib.dates.date2num(endtime),1.025,endinfo,transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
355  yearStr=minTime.strftime('%Y')
356  firstimeStr=minTime.strftime('%b %d %H:%M')
357  lasttimeStr=maxTime.strftime('%b %d %H:%M')
358  ax.set_title('Integrated Luminosity/Day '+yearStr+' ('+firstimeStr+' UTC - '+lasttimeStr+' UTC)',size='small',family='fantasy')
359  self.__fig.autofmt_xdate(bottom=0.18,rotation=0)
360  self.__fig.subplots_adjust(bottom=0.18,left=0.1)
#define min(a, b)
Definition: mlp_lapack.h:161
const T & max(const T &a, const T &b)
def matplotRender.matplotRender.plotSumX_Fill (   self,
  rawxdata,
  rawydata,
  rawfillDict,
  nticks = 6,
  yscale = 'linear' 
)

Definition at line 127 of file matplotRender.py.

References python.multivaluedict.append(), matplotRender.matplotRender.colormap, python.multivaluedict.dict, and max().

128  def plotSumX_Fill(self,rawxdata,rawydata,rawfillDict,nticks=6,yscale='linear'):
129  #print 'plotSumX_Fill rawxdata ',rawxdata
130  ytotal={}
131  ypoints={}
132  xpoints=rawfillDict.keys()
133  if len(xpoints)==0:
134  print '[WARNING]: no data, do nothing'
135  return
136  xpoints.sort()
137  beginfo=''
138  endinfo=''
139  t=sum(rawydata['Delivered'])
140  denomitor=1.0
141  unitstring='$\mu$b$^{-1}$'
142  if t>=1.0e3 and t<1.0e06:
143  denomitor=1.0e3
144  unitstring='nb$^{-1}$'
145  elif t>=1.0e6 and t<1.0e9:
146  denomitor=1.0e6
147  unitstring='pb$^{-1}$'
148  elif t>=1.0e9 and t<1.0e12:
149  denomitor=1.0e9
150  unitstring='fb$^{-1}$'
151  elif t>=1.0e12 and t<1.0e15:
152  denomitor=1.0e12
153  unitstring='ab$^{-1}$'
154 
155  for ylabel,yvalue in rawydata.items():
156  ypoints[ylabel]=[]
157  ytotal[ylabel]=sum(rawydata[ylabel])/denomitor
158  for idx,fill in enumerate(xpoints):
159  runlist=rawfillDict[fill]
160  if idx==0:
161  beginfo=str(fill)+':'+str(runlist[0])
162  if idx==len(xpoints)-1:
163  endinfo=str(fill)+':'+str(runlist[-1])
164  xidx=rawxdata.index(max(runlist))
165  ypoints[ylabel].append(sum(yvalue[0:xidx])/denomitor)
166  ax=self.__fig.add_subplot(111)
167  ax.set_xlabel(r'LHC Fill Number',position=(0.84,0))
168  ax.set_ylabel(r'L '+unitstring,position=(0,0.9))
169  ax.set_xbound(lower=xpoints[0],upper=xpoints[-1])
170  if yscale=='linear':
171  ax.set_yscale('linear')
172  elif yscale=='log':
173  ax.set_yscale('log')
174  else:
175  raise 'unsupported yscale ',yscale
176  xticklabels=ax.get_xticklabels()
177  majorLocator=matplotlib.ticker.LinearLocator( nticks )
178  majorFormatter=matplotlib.ticker.FormatStrFormatter('%d')
179  #minorLocator=matplotlib.ticker.MultipleLocator(sampleinterval)
180  ax.xaxis.set_major_locator(majorLocator)
181  ax.xaxis.set_major_formatter(majorFormatter)
182  #ax.xaxis.set_minor_locator(minorLocator)
183  ax.grid(True)
184  keylist=ypoints.keys()
185  keylist.sort()
186  legendlist=[]
187  for ylabel in keylist:
188  cl='k'
189  if self.colormap.has_key(ylabel):
190  cl=self.colormap[ylabel]
191  ax.plot(xpoints,ypoints[ylabel],label=ylabel,color=cl,drawstyle='steps')
192  legendlist.append(ylabel+' '+'%.2f'%(ytotal[ylabel])+' '+unitstring)
193  #font=FontProperties(size='medium',weight='demibold')
194  #annotations
195  trans=matplotlib.transforms.BlendedGenericTransform(ax.transData,ax.transAxes)
196  ax.text(xpoints[0],1.025,beginfo,transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
197  ax.text(xpoints[-1],1.025,endinfo,transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
198  ax.legend(tuple(legendlist),loc='upper left')
199  self.__fig.subplots_adjust(bottom=0.1,left=0.1)
const T & max(const T &a, const T &b)
def matplotRender.matplotRender.plotSumX_Run (   self,
  rawxdata,
  rawydata,
  nticks = 6,
  yscale = 'linear' 
)

Definition at line 55 of file matplotRender.py.

References python.multivaluedict.append(), matplotRender.matplotRender.colormap, python.multivaluedict.dict, CommonUtil.inclusiveRange(), max(), and min.

55 
56  def plotSumX_Run(self,rawxdata,rawydata,nticks=6,yscale='linear'):
57  xpoints=[]
58  ypoints={}
59  ytotal={}
60  xidx=[]
61  #print 'max rawxdata ',max(rawxdata)
62  #print 'min rawxdata ',min(rawxdata)
63  for x in CommonUtil.inclusiveRange(min(rawxdata),max(rawxdata),1):
64  #print 'x : ',x
65  xpoints.append(x)
66  xidx.append(rawxdata.index(x)) #get the index of the sample points
67  #print 'xidx : ',rawxdata.index(x)
68  if len(xpoints)==0:
69  print '[WARNING]: no data, do nothing'
70  return
71  t=sum(rawydata['Delivered'])
72  denomitor=1.0
73  unitstring='$\mu$b$^{-1}$'
74  if t>=1.0e3 and t<1.0e06:
75  denomitor=1.0e3
76  unitstring='nb$^{-1}$'
77  elif t>=1.0e6 and t<1.0e9:
78  denomitor=1.0e6
79  unitstring='pb$^{-1}$'
80  elif t>=1.0e9 and t<1.0e12:
81  denomitor=1.0e9
82  unitstring='fb$^{-1}$'
83  elif t>=1.0e12 and t<1.0e15:
84  denomitor=1.0e12
85  unitstring='ab$^{-1}$'
86  for ylabel,yvalues in rawydata.items():
87  ypoints[ylabel]=[]
88  for i in xidx:
89  ypoints[ylabel].append(sum(yvalues[0:i])/denomitor)
90  ytotal[ylabel]=sum(yvalues)/denomitor
91  ax=self.__fig.add_subplot(111)
92  if yscale=='linear':
93  ax.set_yscale('linear')
94  elif yscale=='log':
95  ax.set_yscale('log')
96  else:
97  raise 'unsupported yscale ',yscale
98  ax.set_xlabel(r'Run',position=(0.95,0))
99  ax.set_ylabel(r'L '+unitstring,position=(0,0.9))
100  xticklabels=ax.get_xticklabels()
101  for tx in xticklabels:
102  tx.set_rotation(30)
103  majorLocator=matplotlib.ticker.LinearLocator( nticks )
104  majorFormatter=matplotlib.ticker.FormatStrFormatter('%d')
105  minorLocator=matplotlib.ticker.LinearLocator(numticks=4*nticks)
106  ax.xaxis.set_major_locator(majorLocator)
107  ax.xaxis.set_major_formatter(majorFormatter)
108  ax.xaxis.set_minor_locator(minorLocator)
109  ax.set_xbound(lower=xpoints[0],upper=xpoints[-1])
110  ax.grid(True)
111  keylist=ypoints.keys()
112  keylist.sort()
113  legendlist=[]
114  for ylabel in keylist:
115  cl='k'
116  if self.colormap.has_key(ylabel):
117  cl=self.colormap[ylabel]
118  ax.plot(xpoints,ypoints[ylabel],label=ylabel,color=cl,drawstyle='steps')
119  legendlist.append(ylabel+' '+'%.2f'%(ytotal[ylabel])+' '+unitstring)
120  #font=FontProperties(size='medium',weight='demibold')
121  #annotations
122  trans=matplotlib.transforms.BlendedGenericTransform(ax.transData,ax.transAxes)
123  ax.text(xpoints[0],1.025,str(xpoints[0]),transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
124  ax.text(xpoints[-1],1.025,str(xpoints[-1]),transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
125  ax.legend(tuple(legendlist),loc='upper left')
126  self.__fig.subplots_adjust(bottom=0.18,left=0.1)
#define min(a, b)
Definition: mlp_lapack.h:161
const T & max(const T &a, const T &b)
def inclusiveRange
Definition: CommonUtil.py:95
def matplotRender.matplotRender.plotSumX_Time (   self,
  rawxdata,
  rawydata,
  minTime,
  maxTime,
  hltpath = '',
  nticks = 6,
  annotateBoundaryRunnum = False,
  yscale = 'linear' 
)
input:
   rawxdata runDict{runnumber:[delivered,recorded,recorded_hltpath]}
   rawydata {label:[rundata]}

Definition at line 200 of file matplotRender.py.

References python.multivaluedict.append(), matplotRender.matplotRender.colormap, and python.multivaluedict.dict.

201  def plotSumX_Time(self,rawxdata,rawydata,minTime,maxTime,hltpath='',nticks=6,annotateBoundaryRunnum=False,yscale='linear'):
202  '''
203  input:
204  rawxdata runDict{runnumber:[delivered,recorded,recorded_hltpath]}
205  rawydata {label:[rundata]}
206  '''
207  xpoints=[]
208  ypoints={}
209  ytotal={}
210  xidx=[]
211  runs=rawxdata.keys()
212  runs.sort()
213  for idx,run in enumerate(runs):
214  xpoints.append(matplotlib.dates.date2num(rawxdata[run][0]))
215  xidx.append(idx)
216  if len(xpoints)==0:
217  print '[WARNING]: no data, do nothing'
218  return
219  t=sum(rawydata['Delivered'])
220  denomitor=1.0
221  unitstring='$\mu$b$^{-1}$'
222  if t>=1.0e3 and t<1.0e06:
223  denomitor=1.0e3
224  unitstring='nb$^{-1}$'
225  elif t>=1.0e6 and t<1.0e9:
226  denomitor=1.0e6
227  unitstring='pb$^{-1}$'
228  elif t>=1.0e9 and t<1.0e12:
229  denomitor=1.0e9
230  unitstring='fb$^{-1}$'
231  elif t>=1.0e12 and t<1.0e15:
232  denomitor=1.0e12
233  unitstring='ab$^{-1}$'
234 
235  for ylabel,yvalue in rawydata.items():
236  ypoints[ylabel]=[]
237  for i in xidx:
238  ypoints[ylabel].append(sum(yvalue[0:i])/denomitor)
239  ytotal[ylabel]=sum(yvalue)/denomitor
240  ax=self.__fig.add_subplot(111)
241  if yscale=='linear':
242  ax.set_yscale('linear')
243  elif yscale=='log':
244  ax.set_yscale('log')
245  else:
246  raise 'unsupported yscale ',yscale
247  dateFmt=matplotlib.dates.DateFormatter('%d/%m')
248  majorLoc=matplotlib.ticker.LinearLocator(numticks=nticks)
249  ax.xaxis.set_major_locator(majorLoc)
250  minorLoc=matplotlib.ticker.LinearLocator(numticks=nticks*4)
251  ax.xaxis.set_major_formatter(dateFmt)
252  ax.set_xlabel(r'Date',position=(0.84,0))
253  ax.set_ylabel(r'L '+unitstring,position=(0,0.9))
254  ax.xaxis.set_minor_locator(minorLoc)
255  ax.set_xbound(lower=xpoints[0],upper=xpoints[-1])
256  xticklabels=ax.get_xticklabels()
257  for tx in xticklabels:
258  tx.set_horizontalalignment('left')
259  ax.grid(True)
260  keylist=ypoints.keys()
261  keylist.sort()
262  legendlist=[]
263  for ylabel in keylist:
264  cl='k'
265  if self.colormap.has_key(ylabel):
266  cl=self.colormap[ylabel]
267  ax.plot(xpoints,ypoints[ylabel],label=ylabel,color=cl,drawstyle='steps')
268  legendlist.append(ylabel+' '+'%.2f'%(ytotal[ylabel])+' '+unitstring)
269  #annotations
270  trans=matplotlib.transforms.BlendedGenericTransform(ax.transData,ax.transAxes)
271  #print 'run boundary ',runs[0],runs[-1]
272  #print 'xpoints boundary ',xpoints[0],xpoints[-1]
273  if annotateBoundaryRunnum:
274  ax.text(xpoints[0],1.025,str(runs[0]),transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
275  ax.text(xpoints[-1],1.025,str(runs[-1]),transform=trans,horizontalalignment='left',size='x-small',color='green',bbox=dict(facecolor='white'))
276  yearStr=minTime.strftime('%Y')
277  firstimeStr=minTime.strftime('%b %d %H:%M')
278  lasttimeStr=maxTime.strftime('%b %d %H:%M')
279  ax.set_title('Total Integrated Luminosity '+yearStr+' ('+firstimeStr+' UTC - '+lasttimeStr+' UTC)',size='small',family='fantasy')
280  ax.legend(tuple(legendlist),loc='upper left')
281  self.__fig.autofmt_xdate(bottom=0.18,rotation=0)
282  self.__fig.subplots_adjust(bottom=0.1,left=0.1)

Member Data Documentation

matplotRender.matplotRender.__canvas
private

Definition at line 48 of file matplotRender.py.

Referenced by matplotRender.matplotRender.drawHTTPstring(), matplotRender.matplotRender.drawInteractive(), and matplotRender.matplotRender.drawPNG().

matplotRender.matplotRender.__fig
private

Definition at line 47 of file matplotRender.py.

Referenced by matplotRender.matplotRender.drawHTTPstring(), matplotRender.matplotRender.drawInteractive(), and matplotRender.matplotRender.drawPNG().

matplotRender.matplotRender.colormap

Definition at line 49 of file matplotRender.py.

Referenced by matplotRender.matplotRender.plotInst_RunLS(), matplotRender.matplotRender.plotPeakPerday_Time(), matplotRender.matplotRender.plotPerdayX_Time(), matplotRender.matplotRender.plotSumX_Fill(), matplotRender.matplotRender.plotSumX_Run(), and matplotRender.matplotRender.plotSumX_Time().