Changeset 4674:3fe205a1ec49 in orange


Ignore:
Timestamp:
05/19/08 08:08:38 (6 years ago)
Author:
gregor <gregor@…>
Branch:
default
Convert:
a7ac951497f5d3ecc1873eaac12e9acf0e3cc9ba
Message:
  • removed "Show distributions" due to a bug. it will be available in next version of orange.
Location:
orange/OrangeWidgets/Visualize
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Visualize/OWParallelCoordinates.py

    r4583 r4674  
    104104        box = OWGUI.widgetBox(self.SettingsTab, "Visual settings") 
    105105        OWGUI.checkBox(box, self, 'graph.showAttrValues', 'Show attribute values', callback = self.updateGraph) 
    106         OWGUI.checkBox(box, self, 'graph.hidePureExamples', 'Hide pure examples', callback = self.updateGraph, tooltip = "When one value of a discrete attribute has only examples from one class, \nstop drawing lines for this example. Figure must be interpreted from left to right.") 
     106        OWGUI.checkBox(box, self, 'graph.hidePureExamples', 'Hide pure examples', callback = self.updateGraph, tooltip = "When one value of a discrete attribute has only examples from one class, \nstop drawing lines for this example. The visualization must in this case be interpreted from left to right.") 
    107107        OWGUI.checkBox(box, self, 'graph.useSplines', 'Show splines', callback = self.updateGraph, tooltip  = "Show lines using splines") 
    108108        OWGUI.checkBox(box, self, 'graph.lineTracking', 'Line tracking', callback = self.updateGraph, tooltip = "Show nearest example with a wider line. The rest of the lines \nwill be shown in lighter colors.") 
     
    112112        box3 = OWGUI.widgetBox(self.SettingsTab, "Statistics") 
    113113        OWGUI.comboBox(box3, self, "graph.showStatistics", items = ["No statistics", "Means, deviations", "Median, quartiles"], callback = self.updateGraph, sendSelectedValue = 0, valueType = int) 
    114         OWGUI.checkBox(box3, self, 'graph.showDistributions', 'Show distributions', callback = self.updateGraph, tooltip = "Show bars with distribution of class values (only for discrete attributes)") 
     114        #OWGUI.checkBox(box3, self, 'graph.showDistributions', 'Show distributions', callback = self.updateGraph, tooltip = "Show bars with distribution of class values (only for discrete attributes)") 
    115115 
    116116        OWGUI.comboBox(self.SettingsTab, self, "middleLabels", box = "Middle labels", items = ["No labels", "Correlations", "VizRank"], callback = self.updateGraph, tooltip = "The information do you wish to view on top in the middle of coordinate axes", sendSelectedValue = 1, valueType = str) 
  • orange/OrangeWidgets/Visualize/OWParallelGraph.py

    r4140 r4674  
    3838    def updateData(self, attributes, targetValue, midLabels = None, startIndex = 0, stopIndex = 0): 
    3939        self.removeDrawingCurves()  # my function, that doesn't delete selection curves 
    40         self.removeTooltips() 
     40#        self.removeTooltips() 
    4141        self.removeMarkers() 
    4242 
     
    224224        # ############################################ 
    225225        # do we want to show distributions with discrete attributes 
    226         if self.showDistributions and self.rawData.domain.classVar and self.rawData.domain.classVar.varType == orange.VarTypes.Discrete: 
    227             self.showDistributionValues(targetValue, validData, indices, dataStop) 
     226#        if self.showDistributions and self.rawData.domain.classVar and self.rawData.domain.classVar.varType == orange.VarTypes.Discrete: 
     227#            self.showDistributionValues(targetValue, validData, indices, dataStop) 
    228228 
    229229        # ############################################ 
     
    368368 
    369369 
    370     # ########################################## 
    371     # SHOW DISTRIBUTION BAR GRAPH 
    372     def showDistributionValues(self, targetValue, validData, indices, dataStop): 
    373         # get index of class 
    374         classNameIndex = self.attributeNameIndex[self.rawData.domain.classVar.name] 
    375  
    376         # create color table 
    377         count = len(self.rawData.domain.classVar.values) 
    378         #if count < 1: count = 1.0 
    379  
    380         # we create a hash table of possible class values (happens only if we have a discrete class) 
    381         classValueIndices = getVariableValueIndices(self.rawData, self.rawData.domain.classVar.name) 
    382         classValueSorted  = getVariableValuesSorted(self.rawData, self.rawData.domain.classVar.name) 
    383  
    384         self.toolInfo = [] 
    385         for graphAttrIndex in range(len(indices)): 
    386             index = indices[graphAttrIndex] 
    387             if self.rawData.domain[index].varType != orange.VarTypes.Discrete: continue 
    388             attr = self.rawData.domain[index] 
    389             attrLen = len(attr.values) 
    390  
    391             values = [] 
    392             totals = [0] * attrLen 
    393  
    394             # we create a hash table of variable values and their indices 
    395             variableValueIndices = getVariableValueIndices(self.rawData, index) 
    396             variableValueSorted = getVariableValuesSorted(self.rawData, index) 
    397  
    398             for i in range(count): 
    399                 values.append([0] * attrLen) 
    400  
    401             stop = indices[:graphAttrIndex] 
    402             for i in range(len(self.rawData)): 
    403                 if dataStop and self.hidePureExamples == 1 and dataStop[i] in stop: continue 
    404                 if validData[i] == 0: continue 
    405                 # processing for distributions 
    406                 attrIndex = variableValueIndices[self.rawData[i][index].value] 
    407                 classIndex = classValueIndices[self.rawData[i][classNameIndex].value] 
    408                 totals[attrIndex] += 1 
    409                 values[classIndex][attrIndex] += 1 
    410  
    411             # calculate maximum value of all values - needed for scaling 
    412             maximum = 1 
    413             for i in range(len(values)): 
    414                 for j in range(len(values[i])): 
    415                     if values[i][j] > maximum: maximum = values[i][j] 
    416  
    417             # calculate the sum of totals - needed for tooltips 
    418             sumTotals = 0 
    419             for val in totals: sumTotals += val 
    420  
    421             # save info for tooltips 
    422             for i in range(attrLen): 
    423                 list= [] 
    424                 for j in range(count): 
    425                     list.append((classValueSorted[j], values[j][i])) 
    426                 list.reverse() 
    427                 y_start = float(i+1)/float(attrLen); y_end = float(i)/float(attrLen) 
    428                 x_start = float(graphAttrIndex) - 0.45; x_end = float(graphAttrIndex) + 0.45 
    429                 item = (self.rawData.domain[index].name, variableValueSorted[i], totals[i], sumTotals, list, (x_start,x_end), (y_start, y_end)) 
    430                 self.toolInfo.append(item) 
    431  
    432  
    433             # create bar curve 
    434             for i in range(count): 
    435                 if targetValue != None: 
    436                     if classValueSorted[i] == targetValue: newColor = self.colorTargetValue 
    437                     else: newColor = self.colorNonTargetValue 
    438                 else: 
    439                     newColor = self.discPalette[i] 
    440  
    441                 for j in range(attrLen): 
    442                     width = float(values[i][j]*0.5) / float(maximum) 
    443                     interval = 1.0/float(2*attrLen) 
    444                     yOff = float(1.0 + 2.0*j)/float(2*attrLen) 
    445                     height = 0.7/float(count*attrLen) 
    446  
    447                     yLowBott = yOff - float(count*height)/2.0 + i*height 
    448                     ckey = self.insertCurve(PolygonCurve(self, pen = QPen(newColor), brush = QBrush(newColor), xData = [graphAttrIndex, graphAttrIndex + width, graphAttrIndex + width, graphAttrIndex], yData = [yLowBott, yLowBott, yLowBott + height, yLowBott + height])) 
    449                     self.nonDataKeys.append(ckey) 
    450  
    451         self.addTooltips() 
    452  
    453     def addTooltips(self): 
    454         for i in range(len(self.toolInfo)): 
    455             (name, value, total, sumTotals, lista, (x_start,x_end), (y_start, y_end)) = self.toolInfo[i] 
    456             if total == 0: continue 
    457             tooltipText = "Attribute: <b>%s</b><br>Value: <b>%s</b><br>Total instances: <b>%i</b> (%.1f%%)<br>Class distribution:<br>" % (name, value, total, 100.0*float(total)/float(sumTotals)) 
    458             for j in range(len(lista)): 
    459                 (val, count) = lista[j] 
    460                 tooltipText += "<b>%s</b> : <b>%i</b> (%.1f%%)" % (val, count, 100.0*float(count)/float(total)) 
    461                 if j != len(lista)-1 : tooltipText += "<br>" 
    462             x_1 = self.transform(QwtPlot.xBottom, x_start) 
    463             x_2 = self.transform(QwtPlot.xBottom, x_end) 
    464             y_1 = self.transform(QwtPlot.yLeft, y_start) 
    465             y_2 = self.transform(QwtPlot.yLeft, y_end) 
    466             rect = QRect(x_1, y_1, x_2-x_1, y_2-y_1) 
    467             self.toolRects.append(rect) 
    468             QToolTip.add(self, rect, tooltipText) 
    469  
    470     def removeTooltips(self): 
    471         for rect in self.toolRects: 
    472             QToolTip.remove(self, rect) 
    473         self.toolRects = [] 
     370#    # ########################################## 
     371#    # SHOW DISTRIBUTION BAR GRAPH 
     372#    def showDistributionValues(self, targetValue, validData, indices, dataStop): 
     373#        # get index of class 
     374#        classNameIndex = self.attributeNameIndex[self.rawData.domain.classVar.name] 
     375# 
     376#        # create color table 
     377#        count = len(self.rawData.domain.classVar.values) 
     378#        #if count < 1: count = 1.0 
     379# 
     380#        # we create a hash table of possible class values (happens only if we have a discrete class) 
     381#        classValueIndices = getVariableValueIndices(self.rawData, self.rawData.domain.classVar.name) 
     382#        classValueSorted  = getVariableValuesSorted(self.rawData, self.rawData.domain.classVar.name) 
     383# 
     384#        self.toolInfo = [] 
     385#        for graphAttrIndex in range(len(indices)): 
     386#            index = indices[graphAttrIndex] 
     387#            if self.rawData.domain[index].varType != orange.VarTypes.Discrete: continue 
     388#            attr = self.rawData.domain[index] 
     389#            attrLen = len(attr.values) 
     390# 
     391#            values = [] 
     392#            totals = [0] * attrLen 
     393# 
     394#            # we create a hash table of variable values and their indices 
     395#            variableValueIndices = getVariableValueIndices(self.rawData, index) 
     396#            variableValueSorted = getVariableValuesSorted(self.rawData, index) 
     397# 
     398#            for i in range(count): 
     399#                values.append([0] * attrLen) 
     400# 
     401#            stop = indices[:graphAttrIndex] 
     402#            for i in range(len(self.rawData)): 
     403#                if dataStop and self.hidePureExamples == 1 and dataStop[i] in stop: continue 
     404#                if validData[i] == 0: continue 
     405#                # processing for distributions 
     406#                attrIndex = variableValueIndices[self.rawData[i][index].value] 
     407#                classIndex = classValueIndices[self.rawData[i][classNameIndex].value] 
     408#                totals[attrIndex] += 1 
     409#                values[classIndex][attrIndex] += 1 
     410# 
     411#            # calculate maximum value of all values - needed for scaling 
     412#            maximum = 1 
     413#            for i in range(len(values)): 
     414#                for j in range(len(values[i])): 
     415#                    if values[i][j] > maximum: maximum = values[i][j] 
     416# 
     417#            # calculate the sum of totals - needed for tooltips 
     418#            sumTotals = 0 
     419#            for val in totals: sumTotals += val 
     420# 
     421#            # save info for tooltips 
     422#            for i in range(attrLen): 
     423#                list= [] 
     424#                for j in range(count): 
     425#                    list.append((classValueSorted[j], values[j][i])) 
     426#                list.reverse() 
     427#                y_start = float(i+1)/float(attrLen); y_end = float(i)/float(attrLen) 
     428#                x_start = float(graphAttrIndex) - 0.45; x_end = float(graphAttrIndex) + 0.45 
     429#                item = (self.rawData.domain[index].name, variableValueSorted[i], totals[i], sumTotals, list, (x_start,x_end), (y_start, y_end)) 
     430#                self.toolInfo.append(item) 
     431# 
     432# 
     433#            # create bar curve 
     434#            for i in range(count): 
     435#                if targetValue != None: 
     436#                    if classValueSorted[i] == targetValue: newColor = self.colorTargetValue 
     437#                    else: newColor = self.colorNonTargetValue 
     438#                else: 
     439#                    newColor = self.discPalette[i] 
     440# 
     441#                for j in range(attrLen): 
     442#                    width = float(values[i][j]*0.5) / float(maximum) 
     443#                    interval = 1.0/float(2*attrLen) 
     444#                    yOff = float(1.0 + 2.0*j)/float(2*attrLen) 
     445#                    height = 0.7/float(count*attrLen) 
     446# 
     447#                    yLowBott = yOff - float(count*height)/2.0 + i*height 
     448#                    ckey = self.insertCurve(PolygonCurve(self, pen = QPen(newColor), brush = QBrush(newColor), xData = [graphAttrIndex, graphAttrIndex + width, graphAttrIndex + width, graphAttrIndex], yData = [yLowBott, yLowBott, yLowBott + height, yLowBott + height])) 
     449#                    self.nonDataKeys.append(ckey) 
     450# 
     451#        self.addTooltips() 
     452 
     453#    def addTooltips(self): 
     454#        for i in range(len(self.toolInfo)): 
     455#            (name, value, total, sumTotals, lista, (x_start,x_end), (y_start, y_end)) = self.toolInfo[i] 
     456#            if total == 0: continue 
     457#            tooltipText = "Attribute: <b>%s</b><br>Value: <b>%s</b><br>Total instances: <b>%i</b> (%.1f%%)<br>Class distribution:<br>" % (name, value, total, 100.0*float(total)/float(sumTotals)) 
     458#            for j in range(len(lista)): 
     459#                (val, count) = lista[j] 
     460#                tooltipText += "<b>%s</b> : <b>%i</b> (%.1f%%)" % (val, count, 100.0*float(count)/float(total)) 
     461#                if j != len(lista)-1 : tooltipText += "<br>" 
     462#            x_1 = self.transform(QwtPlot.xBottom, x_start) 
     463#            x_2 = self.transform(QwtPlot.xBottom, x_end) 
     464#            y_1 = self.transform(QwtPlot.yLeft, y_start) 
     465#            y_2 = self.transform(QwtPlot.yLeft, y_end) 
     466#            rect = QRect(x_1, y_1, x_2-x_1, y_2-y_1) 
     467#            self.toolRects.append(rect) 
     468#            QToolTip.add(self, rect, tooltipText) 
     469# 
     470#    def removeTooltips(self): 
     471#        for rect in self.toolRects: 
     472#            QToolTip.remove(self, rect) 
     473#        self.toolRects = [] 
    474474 
    475475 
     
    481481            self.parallelDlg.sendShownAttributes([str(axis.label(x1)), str(axis.label(x1+1))]) 
    482482 
    483     def updateLayout(self): 
    484         OWGraph.updateLayout(self) 
    485         self.removeTooltips() 
    486         self.addTooltips() 
     483#    def updateLayout(self): 
     484#        OWGraph.updateLayout(self) 
     485#        self.removeTooltips() 
     486#        self.addTooltips() 
    487487 
    488488    """ 
     
    492492        self.addTooltips() 
    493493    """ 
    494     def updateTooltips(self): 
    495         self.removeTooltips() 
    496         self.addTooltips() 
    497  
    498     # if we zoomed, we have to update tooltips 
    499     def onMouseReleased(self, e): 
    500         OWGraph.onMouseReleased(self, e) 
    501         self.updateTooltips() 
     494#    def updateTooltips(self): 
     495#        self.removeTooltips() 
     496#        self.addTooltips() 
     497 
     498#    # if we zoomed, we have to update tooltips 
     499#    def onMouseReleased(self, e): 
     500#        OWGraph.onMouseReleased(self, e) 
     501#        self.updateTooltips() 
    502502 
    503503    def onMouseMoved(self, e): 
Note: See TracChangeset for help on using the changeset viewer.