Changeset 8665:2762788d59e3 in orange


Ignore:
Timestamp:
08/11/11 12:34:40 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
21746912820ae2558d1383d32d9baef5082be62d
Message:

Use OWLegend (at least for discrete colors) in Parallel Coordinates.

Location:
orange/OrangeWidgets/Prototypes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Prototypes/OWParallelCoordinatesQt.py

    r8620 r8665  
    2121    settingsList = ["graph.jitterSize", "graph.showDistributions", 
    2222                    "graph.showAttrValues", "graph.useAntialiasing", 
    23                     "graph.useSplines", "graph.alphaValue", "graph.alphaValue2", "graph.enabledLegend", "autoSendSelection", 
     23                    "graph.useSplines", "graph.alphaValue", "graph.alphaValue2", "graph.show_legend", "autoSendSelection", 
    2424                    "toolbarSelection", "graph.showStatistics", "colorSettings", "selectedSchemaIndex", "showAllAttributes"] 
    2525    jitterSizeNums = [0, 2,  5,  10, 15, 20, 30] 
     
    5757        self.graph.showAttrValues = 1 
    5858        self.graph.useSplines = 0 
    59         self.graph.enabledLegend = 1 
     59        self.graph.show_legend = 1 
    6060 
    6161        #load settings 
     
    9494        OWGUI.checkBox(box, self, 'graph.useAntialiasing', 'Use antialiasing', callback = self.updateGraph) 
    9595        OWGUI.checkBox(box, self, 'graph.useSplines', 'Show splines', callback = self.updateGraph, tooltip  = "Show lines using splines") 
    96         OWGUI.checkBox(box, self, 'graph.enabledLegend', 'Show legend', callback = self.updateGraph) 
     96        OWGUI.checkBox(box, self, 'graph.show_legend', 'Show legend', callback = self.updateGraph) 
    9797 
    9898        box = OWGUI.widgetBox(self.SettingsTab, "Axis Distance") 
  • orange/OrangeWidgets/Prototypes/OWParallelGraphQt.py

    r8664 r8665  
    2525        self.showStatistics = 0 
    2626        self.lastSelectedCurve = None 
    27         self.enabledLegend = 0 
     27        self.show_legend = 0 
    2828        self.enableGridXB(0) 
    2929        self.enableGridYL(0) 
     
    281281 
    282282        # show the legend 
    283         if self.enabledLegend == 1 and self.dataHasDiscreteClass: 
     283        if self.dataHasDiscreteClass: 
    284284            if self.dataDomain.classVar.varType == orange.VarTypes.Discrete: 
    285285                legendKeys = [] 
     
    292292                    self.oldLegendKeys = legendKeys 
    293293                    self.legend().clear() 
    294                     self.addCurve("<b>" + self.dataDomain.classVar.name + ":</b>", QColor(0,0,0), QColor(0,0,0), 0, symbol = OWPoint.NoSymbol, enableLegend = 1) 
    295294                    for (name, color) in legendKeys: 
    296                         self.addCurve(name, color, color, 15, symbol = OWPoint.Rect, enableLegend = 1) 
     295                        self.legend().add_item(self.dataDomain.classVar.name, name, OWPoint(OWPoint.Rect, color, self.point_width)) 
    297296            else: 
    298297                l = len(attributes)-1 
     
    384383    def event(self, ev): 
    385384        if ev.type() == QEvent.ToolTip: 
    386             x = self.invTransform(QwtPlot.xBottom, ev.pos().x()) 
    387             y = self.invTransform(QwtPlot.yLeft, ev.pos().y()) 
    388  
    389             canvasPos = self.canvas().mapFrom(self, ev.pos()) 
    390             xFloat = self.invTransform(QwtPlot.xBottom, canvasPos.x()) 
     385            x = self.invTransform(xBottom, ev.pos().x()) 
     386            y = self.invTransform(yLeft, ev.pos().y()) 
     387 
     388            canvasPos = self.mapToScene(ev.pos()) 
     389            xFloat = self.invTransform(xBottom, canvasPos.x()) 
    391390            contact, (index, pos) = self.testArrowContact(int(round(xFloat)), canvasPos.x(), canvasPos.y()) 
    392391            if contact: 
     
    418417        for index in indices: 
    419418            if index >= len(self.visualizedAttributes) or index < 0: continue 
    420             intX = self.transform(QwtPlot.xBottom, index) 
    421             bottom = self.transform(QwtPlot.yLeft, self.selectionConditions.get(self.visualizedAttributes[index], [0,1])[0]) 
     419            intX = self.transform(xBottom, index) 
     420            bottom = self.transform(yLeft, self.selectionConditions.get(self.visualizedAttributes[index], [0,1])[0]) 
    422421            bottomRect = QRect(intX-self.bottomPixmap.width()/2, bottom, self.bottomPixmap.width(), self.bottomPixmap.height()) 
    423422            if bottomRect.contains(QPoint(x,y)): return 1, (index, 0) 
    424             top = self.transform(QwtPlot.yLeft, self.selectionConditions.get(self.visualizedAttributes[index], [0,1])[1]) 
     423            top = self.transform(yLeft, self.selectionConditions.get(self.visualizedAttributes[index], [0,1])[1]) 
    425424            topRect = QRect(intX-self.topPixmap.width()/2, top-self.topPixmap.height(), self.topPixmap.width(), self.topPixmap.height()) 
    426425            if topRect.contains(QPoint(x,y)): return 1, (index, 1) 
     
    428427 
    429428    def mousePressEvent(self, e): 
    430         canvasPos = self.canvas().mapFrom(self, e.pos()) 
    431         xFloat = self.invTransform(QwtPlot.xBottom, canvasPos.x()) 
     429        canvasPos = self.mapToScene(e.pos()) 
     430        xFloat = self.invTransform(xBottom, canvasPos.x()) 
    432431        contact, info = self.testArrowContact(int(round(xFloat)), canvasPos.x(), canvasPos.y()) 
    433432 
    434433        if contact: 
    435434            self.pressedArrow = info 
    436         elif self.state in [ZOOMING, PANNING]: 
     435        else: 
    437436            OWPlot.mousePressEvent(self, e) 
    438437 
     
    440439    def mouseMoveEvent(self, e): 
    441440        if hasattr(self, "pressedArrow"): 
    442             canvasPos = self.canvas().mapFrom(self, e.pos()) 
    443             yFloat = min(1, max(0, self.invTransform(QwtPlot.yLeft, canvasPos.y()))) 
     441            canvasPos = self.mapToScene(e.pos()) 
     442            yFloat = min(1, max(0, self.invTransform(yLeft, canvasPos.y()))) 
    444443            index, pos = self.pressedArrow 
    445444            attr = self.dataDomain[self.visualizedAttributes[index]] 
     
    456455                self.autoSendSelectionCallback() 
    457456 
    458         elif self.state in [ZOOMING, PANNING]: 
     457        else: 
    459458            OWPlot.mouseMoveEvent(self, e) 
    460459 
     
    464463            if self.autoSendSelectionCallback and not (self.sendSelectionOnUpdate and self.autoSendSelectionCallback): 
    465464                self.autoSendSelectionCallback() # send the new selection 
    466         elif self.state in [ZOOMING, PANNING]: 
     465        else: 
    467466            OWPlot.mouseReleaseEvent(self, e) 
    468467 
     
    472471            if self.tempSelectionCurve: self.tempSelectionCurve.detach() 
    473472            self.tempSelectionCurve = None 
    474             canvasPos = self.canvas().mapFrom(self, e.pos()) 
    475             x = self.invTransform(QwtPlot.xBottom, canvasPos.x()) 
    476             y = self.invTransform(QwtPlot.yLeft, canvasPos.y()) 
    477             diffX = (self.axisScaleDiv(QwtPlot.xBottom).interval().maxValue() -  self.axisScaleDiv(QwtPlot.xBottom).interval().minValue()) / 2. 
    478  
    479             xmin = x - (diffX/2.) * (x - self.axisScaleDiv(QwtPlot.xBottom).interval().minValue()) / diffX 
    480             xmax = x + (diffX/2.) * (self.axisScaleDiv(QwtPlot.xBottom).interval().maxValue() - x) / diffX 
    481             ymin = self.axisScaleDiv(QwtPlot.yLeft).interval().maxValue() 
    482             ymax = self.axisScaleDiv(QwtPlot.yLeft).interval().minValue() 
    483  
    484             self.zoomStack.append((self.axisScaleDiv(QwtPlot.xBottom).interval().minValue(), self.axisScaleDiv(QwtPlot.xBottom).interval().maxValue(), self.axisScaleDiv(QwtPlot.yLeft).interval().minValue(), self.axisScaleDiv(QwtPlot.yLeft).interval().maxValue())) 
     473            canvasPos = self.mapToScene(e.pos()) 
     474            x = self.invTransform(xBottom, canvasPos.x()) 
     475            y = self.invTransform(yLeft, canvasPos.y()) 
     476            diffX = (self.axisScaleDiv(xBottom).interval().maxValue() -  self.axisScaleDiv(xBottom).interval().minValue()) / 2. 
     477 
     478            xmin = x - (diffX/2.) * (x - self.axisScaleDiv(xBottom).interval().minValue()) / diffX 
     479            xmax = x + (diffX/2.) * (self.axisScaleDiv(xBottom).interval().maxValue() - x) / diffX 
     480            ymin = self.axisScaleDiv(yLeft).interval().maxValue() 
     481            ymax = self.axisScaleDiv(yLeft).interval().minValue() 
     482 
     483            self.zoomStack.append((self.axisScaleDiv(xBottom).interval().minValue(), self.axisScaleDiv(xBottom).interval().maxValue(), self.axisScaleDiv(yLeft).interval().minValue(), self.axisScaleDiv(yLeft).interval().maxValue())) 
    485484            self.setNewZoom(xmin, xmax, ymax, ymin) 
    486485            return 1 
     
    488487        # if the user clicked between two lines send a list with the names of the two attributes 
    489488        elif self.parallelDlg: 
    490             x1 = int(self.invTransform(QwtPlot.xBottom, e.x())) 
    491             axis = self.axisScaleDraw(QwtPlot.xBottom) 
     489            x1 = int(self.invTransform(xBottom, e.x())) 
     490            axis = self.axisScaleDraw(xBottom) 
    492491            self.parallelDlg.sendShownAttributes([str(axis.label(x1)), str(axis.label(x1+1))]) 
    493492        return 0 
     
    502501    def drawCanvas(self, painter): 
    503502        OWPlot.drawCanvas(self, painter) 
    504         for i in range(int(max(0, math.floor(self.axisScaleDiv(QwtPlot.xBottom).interval().minValue()))), int(min(len(self.visualizedAttributes), math.ceil(self.axisScaleDiv(QwtPlot.xBottom).interval().maxValue())+1))): 
     503        for i in range(int(max(0, math.floor(self.axisScaleDiv(xBottom).interval().minValue()))), int(min(len(self.visualizedAttributes), math.ceil(self.axisScaleDiv(xBottom).interval().maxValue())+1))): 
    505504            bottom, top = self.selectionConditions.get(self.visualizedAttributes[i], (0, 1)) 
    506             painter.drawPixmap(self.transform(QwtPlot.xBottom, i)-self.bottomPixmap.width()/2, self.transform(QwtPlot.yLeft, bottom), self.bottomPixmap) 
    507             painter.drawPixmap(self.transform(QwtPlot.xBottom, i)-self.topPixmap.width()/2, self.transform(QwtPlot.yLeft, top)-self.topPixmap.height(), self.topPixmap) 
     505            painter.drawPixmap(self.transform(xBottom, i)-self.bottomPixmap.width()/2, self.transform(yLeft, bottom), self.bottomPixmap) 
     506            painter.drawPixmap(self.transform(xBottom, i)-self.topPixmap.width()/2, self.transform(yLeft, top)-self.topPixmap.height(), self.topPixmap) 
    508507 
    509508    # get selected examples 
Note: See TracChangeset for help on using the changeset viewer.