Changeset 10874:197217d3f57f in orange


Ignore:
Timestamp:
05/17/12 19:52:14 (2 years ago)
Author:
mstajdohar
Branch:
default
rebase_source:
3000c9bba5d1dba558b84be144a789466c9ecab1
Message:

Set empty histogram on null matrix.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/OWHist.py

    r9671 r10874  
    1515        self.parent = parent 
    1616        self.type = type 
    17          
     17 
    1818        self.enableXaxis(1) 
    1919        self.enableYLaxis(1) 
    20          
     20 
    2121        self.xData = [] 
    2222        self.yData = [] 
    23          
     23 
    2424        self.minValue = 0 
    2525        self.maxValue = 0 
     
    2828        self.lowerBoundaryKey = None 
    2929        self.upperBoundaryKey = None 
    30          
     30 
    3131        self.enableGridXB(False) 
    3232        self.enableGridYL(False) 
     
    3636 
    3737    def setValues(self, values): 
     38        if len(values) <= 0: 
     39            self.yData, self.xData = [], [] 
     40            self.minx = -1 
     41            self.maxx = -1 
     42            self.miny = -1 
     43            self.maxy = -1 
     44            self.minValue = -1 
     45            self.maxValue = -1 
     46            self.updateData() 
     47            self.replot() 
     48            return 
     49 
    3850        nBins = 100 
    3951        if len(values) < 100: 
     
    4355        #if numpy version greater than 1.3 
    4456        if len(self.xData) == len(self.yData) + 1: 
    45             self.xData = [(self.xData[i] + self.xData[i+1]) / 2. for i in range(len(self.xData) - 1)] 
    46          
    47         self.minx = min(self.xData)  
     57            self.xData = [(self.xData[i] + self.xData[i + 1]) / 2. for i in range(len(self.xData) - 1)] 
     58 
     59        self.minx = min(self.xData) 
    4860        self.maxx = max(self.xData) 
    4961        self.miny = min(self.yData) 
    5062        self.maxy = max(self.yData) 
    51          
     63 
    5264        self.minValue = min(values) 
    5365        self.maxValue = max(values) 
    54          
     66 
    5567        self.updateData() 
    5668        self.replot() 
    57          
     69 
    5870    def setBoundary(self, lower, upper): 
    5971        if len(self.xData) == 0 and len(self.yData) == 0: 
    6072            return 
    61          
     73 
    6274        self.lowerBoundary = lower 
    6375        self.upperBoundary = upper 
    6476        maxy = max(self.yData) 
    65          
     77 
    6678        self.lowerBoundaryKey.setData([float(self.lowerBoundary), float(self.lowerBoundary)], [0., float(maxy)]) 
    6779        self.upperBoundaryKey.setData([float(self.upperBoundary), float(self.upperBoundary)], [0., float(maxy)]) 
    6880#        self.updateData() 
    6981        self.replot() 
    70              
     82 
    7183    def updateData(self): 
    72         self.removeDrawingCurves(removeLegendItems = 0, removeMarkers=1) 
    73                      
    74         self.key = self.addCurve("histogramCurve", Qt.blue, Qt.blue, 6, symbol = QwtSymbol.NoSymbol, style = QwtPlotCurve.Steps, xData = self.xData, yData = self.yData) 
    75          
     84        self.removeDrawingCurves(removeLegendItems=0, removeMarkers=1) 
     85 
     86        self.key = self.addCurve("histogramCurve", Qt.blue, Qt.blue, 6, symbol=QwtSymbol.NoSymbol, style=QwtPlotCurve.Steps, xData=self.xData, yData=self.yData) 
     87 
    7688        maxy = self.maxy 
    77         self.lowerBoundaryKey = self.addCurve("lowerBoundaryCurve", Qt.red, Qt.red, 6, symbol = QwtSymbol.NoSymbol, style = QwtPlotCurve.Lines, xData = [float(self.lowerBoundary), float(self.lowerBoundary)], yData = [0., float(maxy)]) 
    78         self.upperBoundaryKey = self.addCurve("upperBoundaryCurve", Qt.red, Qt.red, 6, symbol = QwtSymbol.NoSymbol, style = QwtPlotCurve.Lines, xData = [float(self.upperBoundary), float(self.upperBoundary)], yData = [0., float(maxy)]) 
     89        self.lowerBoundaryKey = self.addCurve("lowerBoundaryCurve", Qt.red, Qt.red, 6, symbol=QwtSymbol.NoSymbol, style=QwtPlotCurve.Lines, xData=[float(self.lowerBoundary), float(self.lowerBoundary)], yData=[0., float(maxy)]) 
     90        self.upperBoundaryKey = self.addCurve("upperBoundaryCurve", Qt.red, Qt.red, 6, symbol=QwtSymbol.NoSymbol, style=QwtPlotCurve.Lines, xData=[float(self.upperBoundary), float(self.upperBoundary)], yData=[0., float(maxy)]) 
    7991 
    8092        minx = self.minx 
     
    89101    def updateData(self): 
    90102        OWHist.updateData(self) 
    91         self.upperTailShadeKey = self.addCurve("upperTailShade", Qt.blue, Qt.blue, 6, symbol = QwtSymbol.NoSymbol, style = QwtPlotCurve.Steps) 
    92         self.lowerTailShadeKey = self.addCurve("lowerTailShade", Qt.blue, Qt.blue, 6, symbol = QwtSymbol.NoSymbol, style = QwtPlotCurve.Steps) 
    93         self.middleShadeKey = self.addCurve("middleShade", Qt.blue, Qt.blue, 6, symbol = QwtSymbol.NoSymbol, style = QwtPlotCurve.Steps) 
     103        self.upperTailShadeKey = self.addCurve("upperTailShade", Qt.blue, Qt.blue, 6, symbol=QwtSymbol.NoSymbol, style=QwtPlotCurve.Steps) 
     104        self.lowerTailShadeKey = self.addCurve("lowerTailShade", Qt.blue, Qt.blue, 6, symbol=QwtSymbol.NoSymbol, style=QwtPlotCurve.Steps) 
     105        self.middleShadeKey = self.addCurve("middleShade", Qt.blue, Qt.blue, 6, symbol=QwtSymbol.NoSymbol, style=QwtPlotCurve.Steps) 
    94106 
    95107        self.upperTailShadeKey.setBrush(QBrush(Qt.blue)) 
     
    103115        if len(self.xData) == 0 and len(self.yData) == 0: 
    104116            return 
    105          
     117 
    106118        if self.type in ["hiTail", "twoTail"]: 
    107             index = max(min(int(math.ceil(100*(self.upperBoundary-self.minx)/(self.maxx-self.minx))), 100), 0) 
     119            index = max(min(int(math.ceil(100 * (self.upperBoundary - self.minx) / (self.maxx - self.minx))), 100), 0) 
    108120            x = [self.upperBoundary] + list(self.xData[index:]) 
    109121            y = [self.yData[min(index, 99)]] + list(self.yData[index:]) 
     
    112124            self.upperTailShadeKey.setData(x, y) 
    113125        if self.type in ["lowTail", "twoTail"]: 
    114             index = max(min(int(math.ceil(100*(self.lowerBoundary-self.minx)/(self.maxx-self.minx))),100), 0) 
     126            index = max(min(int(math.ceil(100 * (self.lowerBoundary - self.minx) / (self.maxx - self.minx))), 100), 0) 
    115127            x = list(self.xData[:index]) + [self.lowerBoundary] 
    116             y = list(self.yData[:index]) + [self.yData[min(index,99)]] 
     128            y = list(self.yData[:index]) + [self.yData[min(index, 99)]] 
    117129            x = [float(a) for a  in x] 
    118130            y = [float(a) for a  in y] 
    119131            self.lowerTailShadeKey.setData(x, y) 
    120132        if self.type in ["middle"]: 
    121             indexLow = max(min(int(100*(self.lowerBoundary-self.minx)/(self.maxx-self.minx)),99), 0) 
    122             indexHi = max(min(int(100*(self.upperBoundary-self.minx)/(self.maxx-self.minx)), 100)-1, 0) 
    123             x = [self.lowerBoundary] + list(self.xData[indexLow: indexHi]) +[self.upperBoundary] 
    124             y = [self.yData[max(index,0)]] + list(self.yData[indexLow: indexHi]) +[self.yData[max(indexHi, 99)]] 
     133            indexLow = max(min(int(100 * (self.lowerBoundary - self.minx) / (self.maxx - self.minx)), 99), 0) 
     134            indexHi = max(min(int(100 * (self.upperBoundary - self.minx) / (self.maxx - self.minx)), 100) - 1, 0) 
     135            x = [self.lowerBoundary] + list(self.xData[indexLow: indexHi]) + [self.upperBoundary] 
     136            y = [self.yData[max(index, 0)]] + list(self.yData[indexLow: indexHi]) + [self.yData[max(indexHi, 99)]] 
    125137            x = [float(a) for a  in x] 
    126138            y = [float(a) for a  in y] 
     
    132144        if self.type in ["lowTail", "hiTail", "twoTail"]: 
    133145            self.middleShadeKey.setData([], []) 
    134          
     146 
    135147    def setBoundary(self, low, hi): 
    136148        OWHist.setBoundary(self, low, hi) 
     
    138150#        self.updateData() 
    139151        self.replot() 
    140      
     152 
    141153    def _setBoundary(self, boundary, cut): 
    142154        if self.type in ["twoTail", "middle"]: 
     
    150162        else: 
    151163            self.setBoundary(cut, cut) 
    152          
     164 
    153165    def mousePressEvent(self, e): 
    154166        if self.state == SELECT and self.getBoundaryAt(e.pos()) and e.button() == Qt.LeftButton: 
     
    161173        else: 
    162174            return OWHist.mousePressEvent(self, e) 
    163          
     175 
    164176    def mouseMoveEvent(self, e): 
    165177        if self.state == SELECT: 
     
    174186                    self.canvas().setCursor(self._cursor) 
    175187        else: 
    176             return OWHist.mouseMoveEvent(self ,e)         
     188            return OWHist.mouseMoveEvent(self , e) 
    177189 
    178190    def mouseReleaseEvent(self, e): 
     
    195207        else: 
    196208            return None 
    197              
     209 
Note: See TracChangeset for help on using the changeset viewer.