Changeset 4008:a8c9f3cd06cc in orange


Ignore:
Timestamp:
07/19/07 16:03:13 (7 years ago)
Author:
janezd <janez.demsar@…>
Branch:
default
Convert:
cdfabcab09f923bee339563bf81822f17637d11e
Message:
  • added labels etc
File:
1 edited

Legend:

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

    r3561 r4008  
    1010import orngVisFuncts 
    1111from orngScaleScatterPlotData import * 
     12import numpy 
    1213 
    1314DONT_SHOW_TOOLTIPS = 0 
     
    8889        self.__dict__.update(args)      # set value from args dictionary 
    8990 
     91        colorIndex = -1 
     92        if colorAttr != "" and colorAttr != "(One color)": 
     93            colorIndex = self.attributeNameIndex[colorAttr] 
     94            if self.rawdata.domain[colorAttr].varType == orange.VarTypes.Discrete: 
     95                colorIndices = getVariableValueIndices(self.rawdata, colorIndex) 
     96 
     97        brightenIndex = -1 
     98        if brightenAttr != "" and brightenAttr != "(One color)": 
     99            brightenIndex = self.attributeNameIndex[brightenAttr] 
     100             
     101        shapeIndex = -1 
     102        shapeIndices = {} 
     103        if shapeAttr != "" and shapeAttr != "(One shape)" and len(self.rawdata.domain[shapeAttr].values) < 11: 
     104            shapeIndex = self.attributeNameIndex[shapeAttr] 
     105            if self.rawdata.domain[shapeIndex].varType == orange.VarTypes.Discrete: 
     106                shapeIndices = getVariableValueIndices(self.rawdata, shapeIndex) 
     107 
     108        sizeShapeIndex = -1 
     109        if sizeShapeAttr != "" and sizeShapeAttr != "(One size)": 
     110            sizeShapeIndex = self.attributeNameIndex[sizeShapeAttr] 
     111 
     112        showColorLegend = showColorLegend and colorIndex != -1 and self.rawdata.domain[colorIndex].varType == orange.VarTypes.Continuous 
     113 
    90114        (xVarMin, xVarMax) = self.attrValues[xAttr]; xVar = xVarMax - xVarMin 
    91115        (yVarMin, yVarMax) = self.attrValues[yAttr]; yVar = yVarMax - yVarMin 
    92116        xAttrIndex = self.attributeNameIndex[xAttr] 
    93117        yAttrIndex = self.attributeNameIndex[yAttr] 
     118        attrIndices = [xAttrIndex, yAttrIndex, colorIndex, shapeIndex, sizeShapeIndex] 
     119        while -1 in attrIndices: attrIndices.remove(-1) 
     120        self.shownAttributeIndices = attrIndices 
    94121     
    95122        # set axis for x attribute 
     
    131158        self.oldShowColorLegend = showColorLegend 
    132159 
    133         colorIndex = -1 
    134         if colorAttr != "" and colorAttr != "(One color)": 
    135             colorIndex = self.attributeNameIndex[colorAttr] 
    136             if self.rawdata.domain[colorAttr].varType == orange.VarTypes.Discrete: colorIndices = getVariableValueIndices(self.rawdata, colorIndex) 
    137              
    138         brightenIndex = -1 
    139         if brightenAttr != "" and brightenAttr != "(One color)": 
    140             brightenIndex = self.attributeNameIndex[brightenAttr] 
    141          
    142         shapeIndex = -1 
    143         shapeIndices = {} 
    144         if shapeAttr != "" and shapeAttr != "(One shape)" and len(self.rawdata.domain[shapeAttr].values) < 11: 
    145             shapeIndex = self.attributeNameIndex[shapeAttr] 
    146             if self.rawdata.domain[shapeIndex].varType == orange.VarTypes.Discrete: shapeIndices = getVariableValueIndices(self.rawdata, shapeIndex) 
    147  
    148         sizeShapeIndex = -1 
    149         if sizeShapeAttr != "" and sizeShapeAttr != "(One size)": 
    150             sizeShapeIndex = self.attributeNameIndex[sizeShapeAttr] 
    151  
    152         attrIndices = [xAttrIndex, yAttrIndex, colorIndex, shapeIndex, sizeShapeIndex] 
    153         while -1 in attrIndices: attrIndices.remove(-1) 
    154         self.shownAttributeIndices = attrIndices 
    155  
    156160        # compute x and y positions of the points in the scatterplot         
    157161        xData, yData = self.getXYPositions(xAttr, yAttr) 
     
    167171            scY = [y/ydiff for y in yData] 
    168172             
    169             self.potentialsClassifier = orange.P2NN(domain, Numeric.transpose(Numeric.array([scX, scY, [float(ex[colorIndex]) for ex in self.rawdata]])), None, None, None, None) 
     173            self.potentialsClassifier = orange.P2NN(domain, numpy.transpose(numpy.array([scX, scY, [float(ex[colorIndex]) for ex in self.rawdata]])), None, None, None, None) 
    170174            self.xmin = xmin; self.xmax = xmax 
    171175            self.ymin = ymin; self.ymax = ymax 
     
    173177 
    174178        if self.showTriangulation or self.showBoundaries or self.showUnexplored or self.showUnevenlySampled: 
    175             import numpy, orangeom 
     179            import orangeom 
    176180            maxdist = max(max(xData) - min(xData), max(yData) - min(yData)) / 2 
    177181            triangulation = orangeom.qhull(numpy.array([xData, yData]).transpose()) 
     
    235239                self.addCurve("", QColor(0, 0, 0), QColor(0, 0, 0), QwtSymbol.None, style = QwtCurve.Lines, xData = [xData[i] for i in c+[c[0]]], yData = [yData[i] for i in c+[c[0]]]) 
    236240                 
    237         # ####################################################### 
    238         # show clusters 
    239         if self.showClusters and self.rawdata.domain.classVar and self.rawdata.domain.classVar.varType == orange.VarTypes.Discrete: 
    240             data = self.createProjectionAsExampleTable([xAttrIndex, yAttrIndex], settingsDict = {"validData": validData, "jitterSize": 0.001 * self.clusterOptimization.jitterDataBeforeTriangulation}) 
    241             graph, valueDict, closureDict, polygonVerticesDict, enlargedClosureDict, otherDict = self.clusterOptimization.evaluateClusters(data) 
    242              
    243             classIndices = getVariableValueIndices(self.rawdata, self.attributeNameIndex[self.rawdata.domain.classVar.name]) 
    244             indices = Numeric.compress(validData, Numeric.array(range(len(self.rawdata)))) 
    245              
    246             for key in valueDict.keys(): 
    247                 if not polygonVerticesDict.has_key(key): continue 
    248                 for (i,j) in closureDict[key]: 
    249                     color = self.discPalette[classIndices[graph.objects[i].getclass().value]] 
    250                     self.addCurve("", color, color, 1, QwtCurve.Lines, QwtSymbol.None, xData = [float(self.rawdata[indices[i]][xAttr]), float(self.rawdata[indices[j]][xAttr])], yData = [float(self.rawdata[indices[i]][yAttr]), float(self.rawdata[indices[j]][yAttr])], lineWidth = 1) 
    251  
    252             self.removeMarkers() 
    253             for i in range(graph.nVertices): 
    254                 if not validData[i]: continue 
    255                 mkey = self.insertMarker(str(i)) 
    256                 self.marker(mkey).setXValue(float(self.rawdata[i][xAttrIndex])) 
    257                 self.marker(mkey).setYValue(float(self.rawdata[i][yAttrIndex])) 
    258                 self.marker(mkey).setLabelAlignment(Qt.AlignCenter + Qt.AlignBottom) 
    259              
    260         elif self.clusterClosure: self.showClusterLines(xAttr, yAttr) 
     241  
    261242 
    262243        # ############################################################## 
     
    324305            # create a small number of curves which will make drawing much faster 
    325306            # ############################################################## 
    326             elif self.optimizedDrawing and (colorIndex == -1 or self.rawdata.domain[colorIndex].varType == orange.VarTypes.Discrete) and shapeIndex == -1 and sizeShapeIndex == -1 and not haveSubsetData and brightenIndex == -1: 
     307            elif self.optimizedDrawing and (colorIndex == -1 or self.rawdata.domain[colorIndex].varType == orange.VarTypes.Discrete) and shapeIndex == -1 and sizeShapeIndex == -1 and not haveSubsetData and brightenIndex == -1 and not labelAttr: 
    327308                if colorIndex != -1: 
    328309                    classCount = len(colorIndices) 
     
    411392 
    412393                    self.addCurve(str(i), newColor, newColor, size, symbol = Symbol, xData = [x], yData = [y], showFilledSymbols = showFilled) 
     394 
     395                    # Show a label by each marker 
     396                    if labelAttr: 
     397                        if labelAttr in [self.rawdata.domain.getmeta(mykey).name for mykey in self.rawdata.domain.getmetas().keys()] + [var.name for var in self.rawdata.domain]: 
     398                            if self.rawdata[i][labelAttr].isSpecial(): continue 
     399                            if self.rawdata[i][labelAttr].varType==orange.VarTypes.Continuous: 
     400                                lbl = "%4.1f" % orange.Value(self.rawdata[i][labelAttr]) 
     401                            else: 
     402                                lbl = str(self.rawdata[i][labelAttr].value) 
     403                            mkey = self.insertMarker(lbl) 
     404                            self.marker(mkey).setXValue(float(x)) 
     405                            self.marker(mkey).setYValue(float(y)) 
     406                            self.marker(mkey).setLabelAlignment(Qt.AlignCenter + Qt.AlignBottom) 
    413407                         
    414408                    # we add a tooltip for this point 
     
    447441                        self.addCurve(str(i), newColor, newColor, size, symbol = Symbol, xData = [x], yData = [y], showFilledSymbols = 1) 
    448442 
     443                        # Show a label by each marker 
     444                        if labelAttr: 
     445                            if labelAttr in [self.rawdata.domain.getmeta(mykey).name for mykey in self.rawdata.domain.getmetas().keys()] + [var.name for var in self.rawdata.domain]: 
     446                                if self.rawdata[i][labelAttr].isSpecial(): continue 
     447                                if self.rawdata[i][labelAttr].varType==orange.VarTypes.Continuous: 
     448                                    lbl = "%4.1f" % orange.Value(self.rawdata[i][labelAttr]) 
     449                                else: 
     450                                    lbl = str(self.rawdata[i][labelAttr].value) 
     451                                mkey = self.insertMarker(lbl) 
     452                                self.marker(mkey).setXValue(float(x)) 
     453                                self.marker(mkey).setYValue(float(y)) 
     454                                self.marker(mkey).setLabelAlignment(Qt.AlignCenter + Qt.AlignBottom) 
     455 
    449456         
    450457        # ############################################################## 
     
    581588 
    582589        attrIndices = [self.attributeNameIndex[attr] for attr in attrList] 
    583         if not validData: validData = self.getValidList(attrIndices) 
     590        if validData == None: 
     591            validData = self.getValidList(attrIndices) 
    584592         
    585593        (xArray, yArray) = self.getXYPositions(xAttr, yAttr) 
Note: See TracChangeset for help on using the changeset viewer.