Changeset 11814:7343891c80a1 in orange


Ignore:
Timestamp:
12/16/13 12:29:03 (4 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Fixed an IndexError in LinearProjection and Polyviz widget.

This occurred when the number of classes exceeded the number of available
distinct point symbols.

(fixes #1348)

Location:
Orange/OrangeWidgets/Visualize
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeWidgets/Visualize/OWLinProjGraph.py

    r11800 r11814  
    144144            self.discPalette.setNumberOfColors(len(self.dataDomain.classVar.values)) 
    145145 
    146         useDifferentSymbols = self.useDifferentSymbols and self.dataHasDiscreteClass and len(self.dataDomain.classVar.values) < len(self.curveSymbols) 
     146        useDifferentSymbols = self.useDifferentSymbols and self.dataHasDiscreteClass and len(self.dataDomain.classVar.values) <= len(self.curveSymbols) 
    147147        dataSize = len(self.rawData) 
    148148        validData = self.getValidList(indices) 
     
    240240                    newColor = (0,0,0) 
    241241 
    242                 if self.useDifferentSymbols and self.dataHasDiscreteClass: 
     242                if useDifferentSymbols: 
    243243                    curveSymbol = self.curveSymbols[int(self.originalData[self.dataClassIndex][i])] 
    244244                else: 
     
    281281                        newColor = self.contPalette.getRGB(self.noJitteringScaledSubsetData[self.dataClassIndex][i]) 
    282282 
    283                 if self.useDifferentSymbols and self.dataHasDiscreteClass and self.validSubsetDataArray[self.dataClassIndex][i]: 
     283                if useDifferentSymbols and self.validSubsetDataArray[self.dataClassIndex][i]: 
    284284                    curveSymbol = self.curveSymbols[int(self.originalSubsetData[self.dataClassIndex][i])] 
    285285                else: 
     
    320320        elif self.dataHasDiscreteClass: 
    321321            for i in range(dataSize): 
    322                 if not validData[i]: continue 
    323                 if self.useDifferentColors: newColor = self.discPalette.getRGB(self.originalData[self.dataClassIndex][i]) 
    324                 else:                       newColor = (0,0,0) 
    325                 if self.useDifferentSymbols: curveSymbol = self.curveSymbols[int(self.originalData[self.dataClassIndex][i])] 
    326                 else:                        curveSymbol = self.curveSymbols[0] 
     322                if not validData[i]: 
     323                    continue 
     324                if self.useDifferentColors: 
     325                    newColor = self.discPalette.getRGB(self.originalData[self.dataClassIndex][i]) 
     326                else: 
     327                    newColor = (0, 0, 0) 
     328                if useDifferentSymbols: 
     329                    curveSymbol = self.curveSymbols[int(self.originalData[self.dataClassIndex][i])] 
     330                else: 
     331                    curveSymbol = self.curveSymbols[0] 
    327332                if not xPointsToAdd.has_key((newColor, curveSymbol, self.showFilledSymbols)): 
    328333                    xPointsToAdd[(newColor, curveSymbol, self.showFilledSymbols)] = [] 
     
    360365                    y = 1.0 - index * 0.05 
    361366 
    362                     if not self.useDifferentSymbols:  curveSymbol = self.curveSymbols[0] 
    363                     else:                             curveSymbol = self.curveSymbols[index] 
     367                    if not useDifferentSymbols: 
     368                        curveSymbol = self.curveSymbols[0] 
     369                    else: 
     370                        curveSymbol = self.curveSymbols[index] 
    364371 
    365372                    self.addCurve(str(index), color, color, self.pointWidth, symbol = curveSymbol, xData = [0.95], yData = [y], penAlpha = self.alphaValue, brushAlpha = self.alphaValue) 
  • Orange/OrangeWidgets/Visualize/OWPolyvizGraph.py

    r9671 r11814  
    154154 
    155155        # will we show different symbols? 
    156         useDifferentSymbols = self.useDifferentSymbols and self.dataHasDiscreteClass and len(self.dataDomain.classVar.values) < len(self.curveSymbols) 
     156        useDifferentSymbols = self.useDifferentSymbols and self.dataHasDiscreteClass and len(self.dataDomain.classVar.values) <= len(self.curveSymbols) 
    157157 
    158158        # ########## 
     
    269269                if not validData[i]: continue 
    270270                if self.dataHasClass: 
    271                     if self.useDifferentSymbols: 
     271                    if useDifferentSymbols: 
    272272                        symbol = self.curveSymbols[int(self.originalData[self.dataClassIndex][i])] 
    273273                    if useDifferentColors: 
     
    308308                    y = 1.0 - index * 0.05 
    309309 
    310                     if not self.useDifferentSymbols:  curveSymbol = self.curveSymbols[0] 
    311                     else:                             curveSymbol = self.curveSymbols[index] 
     310                    if not useDifferentSymbols: 
     311                        curveSymbol = self.curveSymbols[0] 
     312                    else: 
     313                        curveSymbol = self.curveSymbols[index] 
    312314 
    313315                    self.addCurve(str(index), color, color, self.pointWidth, symbol = curveSymbol, xData = [0.95, 0.95], yData = [y, y]) 
Note: See TracChangeset for help on using the changeset viewer.