Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages

doublehisto.py

00001 #!/usr/local/bin/python
00002 #
00003 #                               Copyright 2004
00004 #                                     by
00005 #                        The Board of Trustees of the
00006 #                     Leland Stanford Junior University.
00007 #                            All rights reserved.
00008 #
00009 
00010 
00011 __facility__ = "Trigger"
00012 __abstract__ = "Histogram for trigger display"
00013 __author__   = "Martin Kocian, SLAC"
00014 __date__     = ("$Date: 2005/06/15 23:42:30 $").split(' ')[1]
00015 __version__  = "$Revision: 2.3 $"
00016 __release__  = "$Name: R04-12-00 $"
00017 __credits__  = "SLAC"
00018 
00019 from qt import *
00020 import sys
00021 from math import *
00022 BORDERSIZE=10
00023 MARGINLEFT=15
00024 MARGINLOW=25
00025 NTICKMIN=10
00026 NTICKMAX=50
00027 
00028 class doublehisto(QWidget):
00029     def __init__(self,parent=None,name=None,fl=0):
00030         QWidget.__init__(self,parent,name,fl)
00031         self.__firstsetup=True
00032         if not name:
00033             self.setName("doublehisto")
00034         self.clearWState(Qt.WState_Polished)
00035     def setup(self,nbins,lower,upper,logx,logy):
00036         self.__nbins=nbins
00037         self.__lower=float(lower)
00038         self.__upper=float(upper)
00039         self.__nhist=0
00040         self.__logx=logx
00041         self.__logy=logy
00042         self.__scale=1.
00043         self.__scalehaschanged=True
00044         self.fontsize=8
00045         self.bds=BORDERSIZE
00046         self.labelboxx=.05
00047         self.labelboxy=.04
00048         self.boxwidth=0.5
00049         if self.__logy==False:
00050             self.__scalelow=0.
00051         else:
00052             self.__scalelow=0.5
00053         self.__histtitle0="Hist 0"
00054         self.__histtitle1="Hist 1"
00055         self.__marginleft=MARGINLEFT
00056         self.__marginlow=MARGINLOW
00057         self.__ticksx=self.computeticks(self.__lower,self.__upper,self.__logx)
00058         self.__ticksy=self.computeticks(self.__scalelow,self.__scale,self.__logy)
00059         if self.__firstsetup==False:
00060             for it in self.__xlabels: it.deleteLater()
00061             for it in self.__ylabels: it.deleteLater()
00062             self.xaxislabel.deleteLater()
00063         self.__firstsetup=False   
00064         self.__xlabels=self.makelabels(self.__ticksx[0],self.__logx,QLabel.AlignTop|QLabel.AlignHCenter)
00065         self.__ylabels=self.makelabels(self.__ticksy[0],self.__logy,QLabel.AlignVCenter|QLabel.AlignRight)
00066         self.xaxislabel=QLabel(self,"xaxis")
00067         font=QFont(self.xaxislabel.font())
00068         font.setPointSize(self.fontsize)
00069         self.xaxislabel.setFont(font)
00070         self.xaxislabel.setPaletteBackgroundColor(QColor("white"))
00071         self.xaxislabel.setAlignment(QLabel.AlignVCenter|QLabel.AlignRight)
00072         self.histolabel=[]
00073         self.__contents=[]
00074         self.style=[]
00075         self.color=[]
00076         self.uselabel=[]
00077         self.showhisto=[]
00078         self.histoname=[]
00079         self.setBinBoundaries()
00080     def addHisto(self,name="histo",color="black",style=0,uselabel=0,showhis=1):
00081         self.histoname.append(name)
00082         self.uselabel.append(uselabel)
00083         self.showhisto.append(showhis)
00084         self.color.append(color)
00085         self.style.append(style)
00086         self.histolabel.append(QLabel(self,"histo_%d"%self.__nhist))
00087         font=QFont(self.histolabel[-1].font())
00088         font.setPointSize(self.fontsize)
00089         self.histolabel[-1].setFont(font)
00090         self.histolabel[-1].setPaletteBackgroundColor(QColor("white"))
00091         self.histolabel[-1].setAlignment(QLabel.AlignVCenter|QLabel.AlignLeft)
00092         self.__contents.append([])
00093         for i in range(self.__nbins):
00094             self.__contents[self.__nhist].append(0.)
00095         self.__nhist+=1
00096         self.drawLabels()
00097     def find(self,name):
00098         try:
00099             ind=self.histoname.index(name)
00100         except:
00101             ind=-1
00102         return ind
00103     def setHistoLabel(self,name,lab):
00104         ind=self.histoname.index(name)
00105         self.histolabel[ind].setText(lab)
00106     def hideHisto(self,name):
00107         ind=self.histoname.index(name)
00108         self.showhisto[ind]=0
00109         newmax=1.
00110         for i in range(self.__nhist):
00111             if self.showhisto[i]==1:
00112                 newmax=max(newmax,max(self.__contents[i]))
00113         if newmax<max(self.__contents[ind]):
00114             self.__scale=newmax*1.25
00115             self.__scalehaschanged=True
00116         self.updateHisto()
00117         self.drawLabels()
00118     def showHisto(self,name):
00119         ind=self.histoname.index(name)
00120         self.showhisto[ind]=1
00121         if max(self.__contents[ind])>self.__scale*.95:
00122             self.__scale=max(self.__contents[ind])*1.25
00123             self.__scalehaschanged=True
00124         self.updateHisto()
00125         self.drawLabels()
00126     def removeHisto(self,name):
00127         ind=self.histoname.index(name)
00128         newmax=1.
00129         for i in range(self.__nhist):
00130             if self.showhisto[i]==1:
00131                 newmax=max(newmax,max(self.__contents[i]))
00132         if newmax<max(self.__contents[ind]):
00133             self.__scale=newmax*1.25
00134             self.__scalehaschanged=True
00135         self.__contents.pop(ind)
00136         self.histoname.pop(ind)
00137         self.uselabel.pop(ind)
00138         self.showhisto.pop(ind)
00139         self.color.pop(ind)
00140         self.style.pop(ind)
00141         self.histolabel.pop(ind).deleteLater()
00142         self.__nhist-=1
00143         self.updateHisto()
00144         self.drawLabels()
00145     def removeAllHistos(self):
00146         self.__contents=[]
00147         self.histoname=[]
00148         self.uselabel=[]
00149         self.showhisto=[]
00150         self.color=[]
00151         self.style=[]
00152         for i in self.histolabel:i.deleteLater()
00153         self.histolabel=[]
00154         self.__nhist=0
00155         self.updateHisto()
00156         self.drawLabels()
00157         self.__scale==1.
00158     def setBinBoundaries(self):
00159         self.__binboundary=[]
00160         for i in range (self.__nbins):
00161             if self.__logx:
00162                 self.__binboundary.append(pow(10,(log10(self.__upper)-log10(self.__lower))/self.__nbins*i+log10(self.__lower)))
00163             else:
00164                 self.__binboundary.append((self.__upper-self.__lower)/self.__nbins*(i)+self.__lower) 
00165 
00166     def resetHisto(self,number):
00167         for i in range(self.__nbins):
00168             self.__contents[number][i]=0.
00169     def resetAllHistos(self):
00170         for i in range (self.__nhist):
00171             self.resetHisto(i)
00172             self.__scale=1.
00173 
00174     def setLogy(self, on):
00175        self.__logy=on
00176        if on:
00177            self.__marginleft=MARGINLEFT
00178            self.__scalelow=0.5
00179        else: self.__scalelow=0.
00180        self.__scalehaschanged=True
00181        self.updateHisto()
00182             
00183     def makelabels(self,ticks,logs,alignment):
00184         labels=[]
00185         for tick in ticks:
00186             labels.append(QLabel(self,"tick_%d"%tick))
00187             font=QFont(labels[-1].font())
00188             font.setPointSize(self.fontsize)
00189             labels[-1].setFont(font)
00190             if logs==True:
00191                 if floor(log10(tick)+.1)==0:labels[-1].setText("<b>1<sup> ")
00192                 elif int(log10(tick)+.1)==1:labels[-1].setText("<b>10<sup> ")
00193                 else: labels[-1].setText("<b>10<sup>%d"% floor(log10(tick)+.1))
00194             else:
00195                 if remainder(tick)<1e-5 or tick==0:
00196                     labels[-1].setText("<b>%d"%tick)
00197                 else:
00198                     labels[-1].setText("<b>"+str(tick))
00199             labels[-1].setPaletteBackgroundColor(QColor("white")) 
00200             labels[-1].setAlignment(alignment)
00201         return labels
00202     def fill(self,name,xval,weight=1.):
00203         hist=self.histoname.index(name)
00204         if hist>=self.__nhist or xval>self.__upper:return
00205         for i in range(self.__nbins-1,-1,-1):
00206             if xval>self.__binboundary[i]:
00207                     self.__contents[hist][i]+=weight
00208                     if self.__contents[hist][i]>self.__scale*.95 and self.showhisto[hist]==1:
00209                         self.__scale=self.__contents[hist][i]*1.25
00210                         self.__scalehaschanged=True
00211                     break
00212     def setBinContent(self,name,i,w):
00213         hist=self.histoname.index(name)
00214         self.__contents[hist][i]=w
00215         if self.__contents[hist][i]>self.__scale*.95 and self.showhisto[hist]==1:
00216                         self.__scale=self.__contents[hist][i]*1.25
00217                         self.__scalehaschanged=True
00218     def resetlin(self):
00219         newaxis=False
00220         if self.__logx==True:
00221             newaxis=True
00222         self.__logx=False
00223         self.resetxaxis(newaxis)
00224     def resetlog(self):
00225         newaxis=False
00226         if self.__logx==False:
00227             newaxis=True
00228         self.__logx=True
00229         self.resetxaxis(newaxis)
00230 
00231     def resetxaxis(self,newaxis):
00232         for i in range (self.__nhist):
00233             self.resetHisto(i)
00234         if newaxis==True:
00235             self.__ticksx=self.computeticks(self.__lower,self.__upper,self.__logx) 
00236             for j in self.__xlabels:j.deleteLater()
00237             self.__xlabels=self.makelabels(self.__ticksx[0],self.__logx,QLabel.AlignHCenter|QLabel.AlignTop)
00238             self.setBinBoundaries()
00239         self.__scale=1.
00240         self.__scalehaschanged=True
00241         self.updateHisto()
00242             
00243     def updateHisto(self):
00244         if self.__scalehaschanged==True:
00245             self.__ticksy=self.computeticks(self.__scalelow,self.__scale,self.__logy)
00246             for j in self.__ylabels:j.deleteLater()
00247             self.__ylabels=self.makelabels(self.__ticksy[0],self.__logy,QLabel.AlignVCenter|QLabel.AlignRight)
00248             if len(self.__ylabels[-1].text())>6 and not self.__logy:self.__marginleft=(len(self.__ylabels[-1].text())-3)*6
00249             self.drawLabels()        
00250             self.__scalehaschanged=False
00251         self.update()
00252     def computeticks(self,lower,upper,log):
00253         if log:
00254             l=floor(log10(float(lower)))
00255             tickval=ceil(float(lower)/pow(10,l))*pow(10,l)
00256             ticks=[[],[]]
00257             while tickval<=upper:
00258                 if int(tickval/pow(10,l)+.1)==10:
00259                     l+=1
00260                     ticks[0].append(tickval)
00261                 else: 
00262                     if int(tickval/pow(10,l)+.1)==1:
00263                         ticks[0].append(tickval)
00264                     else:
00265                         ticks[1].append(tickval)
00266                 tickval+=pow(10,l)
00267         else:
00268             l=pow(10,floor(log10(upper-lower)-.1))
00269             if (upper-lower)/l*10<=NTICKMAX:subd=10
00270             elif (upper-lower)/l*5<=NTICKMAX:subd=5
00271             elif (upper-lower)/l*2<=NTICKMAX:subd=2
00272             else: subd=1
00273             l2=float(l)/subd
00274             ticks=[[],[]]
00275             if lower%l==0:
00276                 ticks[0].append(lower)
00277             for i in range(int((upper-(upper%l)-(lower-lower%l))/l)):
00278                 ticks[0].append(lower+(i+1)*l-((lower)%l))
00279             if lower%l2==0:
00280                 ticks[1].append(lower)
00281             for i in range(int((upper-(upper%l2)-(lower-lower%l2))/l2)):
00282                 ticks[1].append(lower+(i+1)*l2-((lower)%l2))                
00283         return ticks    
00284              
00285     def paintEvent(self,pe):
00286         try:
00287             r=pe.rect()
00288             painter=QPainter()
00289             painter.begin(self)
00290             painter.setBrush(QColor("white"))
00291             painter.drawRect(0,0,self.size().width(),self.size().height())
00292             widthx=float(self.size().width()-2*self.bds-self.__marginleft)
00293             widthy=float(self.size().height()-2*self.bds-self.__marginlow)
00294             pen=QPen()
00295             for j in range (self.__nhist):
00296               if self.showhisto[j]==0:continue
00297               if self.style[j]==1:
00298                 painter.setBrush(QColor(self.color[j]))
00299                 pen.setColor(QColor(self.color[j]))
00300                 painter.setPen(pen)
00301                 for i in range(self.__nbins):
00302                   if self.__logy == True and self.__contents[j][i]>self.__scalelow:
00303                     painter.drawRect(1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00304                                  self.bds+widthy-(log10(self.__contents[j][i])-log10(self.__scalelow))
00305                                                     /(log10(self.__scale)-log10(self.__scalelow))*widthy,
00306                                  int(float(i+1)*widthx/self.__nbins)-int(float(i)*widthx/self.__nbins),
00307                                  1+(log10(self.__contents[j][i])-log10(self.__scalelow))/
00308                                     (log10(self.__scale)-log10(self.__scalelow))*widthy)
00309                   else:
00310                     painter.drawRect(1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00311                                  self.bds+widthy-(self.__contents[j][i]/self.__scale)*widthy,
00312                                  int(float(i+1)*widthx/self.__nbins)-int(float(i)*widthx/self.__nbins),
00313                                  1+(self.__contents[j][i]/self.__scale)*widthy)
00314             for j in range (self.__nhist):
00315               if self.showhisto[j]==0:continue
00316               if self.style[j]==0:
00317                 pen.setColor(QColor(self.color[j]))
00318                 painter.setPen(pen)
00319                 for i in range(self.__nbins):
00320                   if self.__logy==True :
00321                    if self.__contents[j][i]>self.__scalelow :
00322                     if i!=0:
00323                         if self.__contents[j][i-1]>self.__scalelow:
00324                           painter.drawLine(1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00325                                      self.bds+widthy-(log10(self.__contents[j][i-1])-log10(self.__scalelow))
00326                                            /(log10(self.__scale)-log10(self.__scalelow))*widthy,
00327                                       1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00328                                      self.bds+widthy-(log10(self.__contents[j][i])-log10(self.__scalelow))
00329                                            /(log10(self.__scale)-log10(self.__scalelow))*widthy)
00330                         else:
00331                           painter.drawLine(1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00332                                      self.bds+widthy,
00333                                       1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00334                                      self.bds+widthy-(log10(self.__contents[j][i])-log10(self.__scalelow))
00335                                            /(log10(self.__scale)-log10(self.__scalelow))*widthy)
00336                     painter.drawLine(1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00337                                      self.bds+widthy-(log10(self.__contents[j][i])-log10(self.__scalelow))
00338                                      /(log10(self.__scale)-log10(self.__scalelow))*widthy,
00339                                      self.bds+self.__marginleft+float(i)/self.__nbins*widthx+
00340                                      int(float(i+1)*widthx/self.__nbins)-int(float(i)*widthx/self.__nbins),
00341                                      self.bds+widthy-(log10(self.__contents[j][i])-log10(self.__scalelow))/
00342                                                         (log10(self.__scale)-log10(self.__scalelow))*widthy)
00343                     if i<self.__nbins-1:
00344                         if self.__contents[j][i+1]<self.__scalelow:
00345                             painter.drawLine(self.bds+self.__marginleft+float(i)/self.__nbins*widthx+
00346                                      int(float(i+1)*widthx/self.__nbins)-int(float(i)*widthx/self.__nbins),
00347                                      self.bds+widthy,
00348                                      self.bds+self.__marginleft+float(i)/self.__nbins*widthx+
00349                                      int(float(i+1)*widthx/self.__nbins)-int(float(i)*widthx/self.__nbins),
00350                                      self.bds+widthy-(log10(self.__contents[j][i])-log10(self.__scalelow))
00351                                            /(log10(self.__scale)-log10(self.__scalelow))*widthy)
00352                               
00353                   else:
00354                     if i!=0:
00355                         painter.drawLine(1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00356                                      self.bds+widthy-(self.__contents[j][i-1]/self.__scale)*widthy,
00357                                       1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00358                                      self.bds+widthy-(self.__contents[j][i]/self.__scale)*widthy)
00359                     painter.drawLine(1+self.bds+self.__marginleft+float(i)/self.__nbins*widthx,
00360                                      self.bds+widthy-(self.__contents[j][i]/self.__scale)*widthy,
00361                                      self.bds+self.__marginleft+float(i)/self.__nbins*widthx+
00362                                      int(float(i+1)*widthx/self.__nbins)-int(float(i)*widthx/self.__nbins),
00363                                      self.bds+widthy-(self.__contents[j][i]/self.__scale)*widthy)
00364             #done with histograms, now do ticks
00365             pen.setColor(QColor("black"))
00366             painter.setPen(pen)
00367             painter.setBrush(QBrush(Qt.NoBrush))
00368             painter.drawRect(self.bds+self.__marginleft,self.bds,widthx+1,widthy+1)
00369             for tick in self.__ticksx[0]:
00370                 if self.__logx:
00371                     painter.drawLine(self.bds+self.__marginleft+widthx/(log10(self.__upper)-log10(self.__lower))*(log10(tick)-
00372                             log10(self.__lower)),widthy+self.bds-1,
00373                            self.bds+self.__marginleft+widthx/(log10(self.__upper)-log10(self.__lower))*(log10(tick)-
00374                             log10(self.__lower)),widthy+self.bds-6)
00375                 else: 
00376                   painter.drawLine(self.bds+self.__marginleft+widthx/(self.__upper-self.__lower)*(tick-self.__lower),widthy+self.bds-1,
00377                                  self.bds+self.__marginleft+widthx/(self.__upper-self.__lower)*(tick-self.__lower),widthy+self.bds-6)
00378             for tick in self.__ticksx[1]:
00379                 if self.__logx:
00380                     painter.drawLine(self.bds+self.__marginleft+widthx/(log10(self.__upper)-log10(self.__lower))*(log10(tick)-
00381                             log10(self.__lower)),widthy+self.bds-1,
00382                            self.bds+self.__marginleft+widthx/(log10(self.__upper)-log10(self.__lower))*(log10(tick)-
00383                             log10(self.__lower)),widthy+self.bds-4)
00384                 else: 
00385                   painter.drawLine(self.bds+self.__marginleft+widthx/(self.__upper-self.__lower)*(tick-self.__lower),widthy+self.bds-1,
00386                                  self.bds+self.__marginleft+widthx/(self.__upper-self.__lower)*(tick-self.__lower),widthy+self.bds-4)                                 
00387             for tick in self.__ticksy[0]:
00388                 if self.__logy:
00389                     painter.drawLine(self.bds+self.__marginleft,self.bds+widthy-widthy/(log10(self.__scale)-log10(self.__scalelow))*
00390                                      (log10(tick)-log10(self.__scalelow)),
00391                                  self.bds+6+self.__marginleft,self.bds+widthy-widthy/(log10(self.__scale)-log10(self.__scalelow))*
00392                                      (log10(tick)-log10(self.__scalelow)))
00393                 else:
00394                     painter.drawLine(self.bds+self.__marginleft,self.bds+widthy-widthy/(self.__scale)*tick,
00395                                  self.bds+6+self.__marginleft,self.bds+widthy-widthy/(self.__scale)*tick)
00396             for tick in self.__ticksy[1]:
00397                 if self.__logy:
00398                     painter.drawLine(self.bds+self.__marginleft,self.bds+widthy-widthy/(log10(self.__scale)-log10(self.__scalelow))*
00399                                      (log10(tick)-log10(self.__scalelow)),
00400                                  self.bds+3+self.__marginleft,self.bds+widthy-widthy/(log10(self.__scale)-log10(self.__scalelow))*
00401                                      (log10(tick)-log10(self.__scalelow)))
00402                 else:
00403                     painter.drawLine(self.bds+self.__marginleft,self.bds+widthy-widthy/(self.__scale)*tick,
00404                                  self.bds+3+self.__marginleft,self.bds+widthy-widthy/(self.__scale)*tick)
00405             #box with labels
00406             nlab=0
00407             textdist=self.fontsize*2
00408             for i in range(self.__nhist):
00409                 if self.uselabel[i] and self.showhisto[i]:nlab+=1 
00410             if nlab>0:
00411                 painter.setBrush(QColor("white"))
00412                 painter.drawRect(self.bds+self.__marginleft+widthx*self.labelboxx,self.bds+widthy*self.labelboxy,
00413                                  widthx*self.boxwidth,textdist*nlab+2)
00414                 i=0
00415                 for j in range (self.__nhist):
00416                     if self.uselabel[j]==0 or self.showhisto[j]==0:continue
00417                     if self.style[j]:
00418                         painter.setBrush(QColor(self.color[j]))
00419                         pen.setColor(QColor(self.color[j]))
00420                         painter.setPen(pen)
00421                         painter.drawRect(self.bds+self.__marginleft+widthx*(self.labelboxx+.02),
00422                              self.bds+widthy*self.labelboxy+textdist*i+2,widthx*.04,textdist-2)
00423                     else:
00424                         painter.setBrush(QColor("white"))
00425                         pen.setColor(QColor(self.color[j]))
00426                         painter.setPen(pen)
00427                         painter.drawLine(self.bds+self.__marginleft+widthx*(self.labelboxx+.02),
00428                                          self.bds+widthy*self.labelboxy+textdist*i+textdist/2,
00429                              self.bds+self.__marginleft+widthx*(self.labelboxx+.06),
00430                                          self.bds+widthy*self.labelboxy+textdist*i+textdist/2)
00431                     i+=1
00432                 pen.setColor(QColor("black"))
00433                 painter.setPen(pen)
00434         except :
00435             print "Unexpected error:", sys.exc_info()[1]
00436 
00437 
00438     def resizeEvent(self,rev):
00439       try:
00440         self.drawLabels()
00441       except:
00442             print "Unexpected Label error:", sys.exc_info()[1]
00443 
00444   
00445     def drawLabels(self):
00446         width=float(self.size().width()-2*self.bds-self.__marginleft)
00447         height=float(self.size().height()-2*self.bds-self.__marginlow)
00448         self.xaxislabel.setGeometry(self.bds+self.__marginleft,height+2*self.bds-2+self.__marginlow-15,width,13)
00449         #histogram labels
00450         i=0
00451         textdist=self.fontsize*2
00452         for j in range (self.__nhist):
00453             if self.uselabel[j]==0 or self.showhisto[j]==0:
00454                 self.histolabel[j].hide()
00455                 continue
00456             self.histolabel[j].setGeometry(self.bds+self.__marginleft+width*(self.labelboxx+.1),
00457                                        self.bds+height*self.labelboxy+textdist*i+1,width*(self.boxwidth-0.12),textdist-2)
00458             self.histolabel[j].show()
00459             i+=1
00460         
00461         #axis labels
00462         i=0
00463         for tick in self.__ticksx[0]:
00464             if self.__logx:
00465                 self.__xlabels[i].setGeometry(QRect(self.bds+self.__marginleft+width/(log10(self.__upper)-
00466                                             log10(self.__lower))*(log10(tick)
00467                                            -log10(self.__lower))-15, height+self.bds+2,30,self.bds+self.__marginlow-18))
00468             else:
00469                 if len(self.__ticksx[0])>1:
00470                     labelwidth=(self.__ticksx[0][1]-self.__ticksx[0][0])/2./(self.__upper-self.__lower)*width-2
00471                 else:
00472                     labelwidth=self.size().width()/2.
00473                 while (self.bds+self.__marginleft+width/(self.__upper-self.__lower)*(tick-self.__lower)-labelwidth<1 or 
00474                  self.bds+self.__marginleft+width/(self.__upper-self.__lower)*(tick-self.__lower)+labelwidth>self.size().width()-1):
00475                     labelwidth-=1
00476                     if labelwidth<=6:break
00477                 self.__xlabels[i].setGeometry(QRect(self.bds+self.__marginleft+width/(self.__upper-self.__lower)
00478                                               *(tick-self.__lower)-labelwidth, height+self.bds+2,2*labelwidth,
00479                                                         self.bds+self.__marginlow-18))
00480                       
00481                 
00482             self.__xlabels[i].show()
00483             i+=1
00484         i=0
00485         for tick in self.__ticksy[0]:
00486             if self.__logy:
00487                 self.__ylabels[i].setGeometry(QRect(1,self.bds+height-height/(log10(self.__scale)-log10(self.__scalelow))
00488                                    *(log10(tick)-log10(self.__scalelow))-8,self.bds+self.__marginleft-4,16))
00489             else:
00490                 self.__ylabels[i].setGeometry(QRect(1,self.bds+height-height/self.__scale*tick-8,
00491                                                     self.bds+self.__marginleft-4,16))
00492             self.__ylabels[i].show()
00493             i+=1
00494 
00495 
00496 def remainder(nr):
00497   remainder = ceil(nr) - nr
00498   if remainder>.5:
00499       remainder=nr-floor(nr)
00500   return remainder

Generated on Fri Jul 21 13:26:27 2006 for LATTE R04-12-00 by doxygen 1.4.3