Ignore:
Timestamp:
03/12/12 15:08:12 (2 years ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Fixed some errors in OWDistribution widget (fixes #1132).

File:
1 edited

Legend:

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

    r9671 r10493  
    190190                g = orange.ConditionalProbabilityEstimatorConstructor_loess(self.dc[self.attributeName], nPoints=200) #!!! 
    191191                self.probGraphValues = [(x, ps, [(v>=0 and math.sqrt(v)*1.96 or 0.0) for v in ps.variances]) for (x, ps) in g.probabilities.items()] 
    192             except: 
     192            except Exception: 
    193193                self.probGraphValues = [] 
    194194            # print [ps.variances for (x, ps) in g.probabilities.items()] 
     
    260260                c=orange.ContingencyAttrClass(d_variable, d_data) 
    261261                XY=[(key+self.subIntervalStep/2.0, val.average()) for key, val in zip(keys, c.values()) if val.cases] 
    262                 XY=statc.loess(XY, 10, 4.0, 1) 
     262                if len(XY) >= 2: 
     263                    XY=statc.loess(XY, 10, 4.0, 1) 
    263264            else: 
    264265                d_data=orange.ContingencyAttrClass(self.attributeName, self.data) 
     
    287288            self.refreshPureVisibleOutcomes() 
    288289            return 
     290         
    289291        self.enableYRaxis(0) 
    290292        self.setAxisScale(QwtPlot.yRight, 0.0, 1.0, 0.1) 
     
    330332 
    331333    def refreshProbGraph(self): 
    332         if not self.data or self.targetValue == None: return 
     334        if not self.data or self.targetValue == None: 
     335            return 
     336         
    333337        if self.showProbabilities: 
    334338            self.enableYRaxis(1) 
     
    394398class OWDistributions(OWWidget): 
    395399    settingsList = ["numberOfBars", "barSize", "graph.showContinuousClassGraph", "showProbabilities", "showConfidenceIntervals", "smoothLines", "lineWidth", "showMainTitle", "showXaxisTitle", "showYaxisTitle", "showYPaxisTitle"] 
    396     contextHandlers = {"": DomainContextHandler("", ["attribute", "targetValue", "visibleOutcomes", "mainTitle", "xaxisTitle", "yaxisTitle", "yPaxisTitle"], matchValues=DomainContextHandler.MatchValuesClass)} 
     400    contextHandlers = {"": DomainContextHandler("", ["attribute", "targetValue", "visibleOutcomes", 
     401                                                     "mainTitle", "xaxisTitle", "yaxisTitle", "yPaxisTitle"],  
     402                                                matchValues=DomainContextHandler.MatchValuesClass, 
     403                                                findImperfect=False, 
     404                                                contextDataVersion=2, 
     405                                                )} 
    397406 
    398407    def __init__(self, parent=None, signalManager = None): 
     
    479488        OWGUI.spin(box, self, "numberOfBars", label="Number of bars", min=5, max=60, step=5, callback=self.setNumberOfBars, callbackOnReturn=True) 
    480489 
    481         box5 = OWGUI.widgetBox(self.SettingsTab, "Probability plot") 
     490        self.probabilityPlotBox = box5 = OWGUI.widgetBox(self.SettingsTab, "Probability plot") 
    482491        self.showProb = OWGUI.checkBox(box5, self, 'showProbabilities', 'Show probabilities', callback = self.setShowProbabilities) 
    483492        self.targetQCB = OWGUI.comboBox(OWGUI.indentedBox(box5, sep=OWGUI.checkButtonOffsetHint(self.showProb)), self, "targetValue", label="Target value", valueType=int, callback=self.setTarget) 
     
    615624            return 
    616625        self.dataHasClass = bool(data.domain.classVar) 
    617         if self.dataHasClass: 
    618             self.dataHasDiscreteClass = data.domain.classVar.varType != orange.VarTypes.Continuous 
     626        self.dataHasDiscreteClass = self.dataHasClass and data.domain.classVar.varType == orange.VarTypes.Discrete 
    619627 
    620628        sameDomain = data and self.data and data.domain == self.data.domain 
     
    635643            # set targets 
    636644            self.targetQCB.clear() 
    637             if self.data.domain.classVar and self.data.domain.classVar.varType == orange.VarTypes.Discrete: 
     645            if self.dataHasDiscreteClass: 
    638646                self.targetQCB.addItems([val for val in self.data.domain.classVar.values]) 
    639647                self.setTarget(0) 
     
    653661 
    654662            self.targetValue = 0  # self.data.domain.classVar.values.index(str(targetVal)) 
    655             if self.dataHasClass and self.dataHasDiscreteClass: 
     663            if self.dataHasDiscreteClass: 
    656664                self.graph.setTargetValue(self.targetValue) #str(self.data.domain.classVar.values[0])) # pick first target 
    657665                self.setOutcomeNames(self.data.domain.classVar.values.native()) 
     666                self.probabilityPlotBox.setEnabled(True) 
    658667            else: 
    659                self.setOutcomeNames([]) 
    660  
     668                self.setTarget(None) 
     669                self.setOutcomeNames([]) 
     670                self.probabilityPlotBox.setEnabled(False) 
     671                 
    661672            self.openContext("", self.data) 
    662673            if self.data and variables: 
    663674                self.setVariable() 
    664  
     675                 
     676            # In case the openContext does somethig stupid.   
     677            if self.dataHasDiscreteClass and not self.targetValue < len(self.data.domain.classVar.values): 
     678                self.setTarget(0) 
     679                  
    665680        for f in [self.setMainTitle, self.setTarget, self.setXaxisTitle, self.setYaxisTitle, self.setYPaxisTitle, self.outcomeSelectionChange]: 
    666681            f() 
Note: See TracChangeset for help on using the changeset viewer.