Changeset 3552:492fa6667bff in orange


Ignore:
Timestamp:
04/18/07 10:17:12 (7 years ago)
Author:
spetrovic <spetrovic@…>
Branch:
default
Convert:
8e5c616b5463903609edcccb32a6c00dac8866df
Message:

* empty log message *

Location:
orange/OrangeWidgets/Visualize
Files:
2 edited

Legend:

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

    r3403 r3552  
    1818textCorpusModul = 1 
    1919 
    20 try: 
    21   from orngTextCorpus import CategoryDocument, checkFromText 
    22 except ImportError: 
    23   textCorpusModul = 0 
     20#try: 
     21#  from orngTextCorpus import CategoryDocument, checkFromText 
     22#except ImportError: 
     23#  textCorpusModul = 0 
     24 
    2425 
    2526import os 
     27 
     28def checkFromText(data): 
     29    if not isinstance(data, orange.ExampleTable): 
     30        return False 
     31    if len(data.domain.attributes) < 10 and len(data.domain.getmetas()) > 15: 
     32        return True 
     33    elif len(data.domain.attributes) * 2 < len(data.domain.getmetas()): 
     34        return True 
     35    return False 
    2636 
    2737class OWCorrAnalysis(OWWidget): 
     
    123133        OWGUI.checkBox(box4, self, 'showGridlines', 'Show gridlines', callback = self.setShowGridlines) 
    124134##        OWGUI.checkBox(box4, self, 'graph.showClusters', 'Show clusters', callback = self.updateGraph, tooltip = "Show a line boundary around a significant cluster")         
     135        OWGUI.checkBox(box4, self, 'graph.showRowLabels', 'Show row labels', callback = self.updateGraph) 
     136        OWGUI.checkBox(box4, self, 'graph.showColumnLabels', 'Show column labels', callback = self.updateGraph) 
     137 
    125138 
    126139        self.colorButtonsBox = OWGUI.widgetBox(self.SettingsTab, " Colors ", orientation = "horizontal") 
     
    129142        #browsing radius 
    130143        OWGUI.hSlider(self.SettingsTab, self, 'percRadius', box=' Browsing Curve Size ', minValue = 0, maxValue=100, step=5, callback = self.calcRadius) 
     144 
     145        #font size         
     146        OWGUI.hSlider(self.SettingsTab, self, 'graph.labelSize', box=' Set font size for labels ', minValue = 8, maxValue=48, step=1, callback = self.updateGraph) 
     147 
     148        OWGUI.hSlider(self.SettingsTab, self, 'graph.maxPoints', box=' Maximum number of points ', minValue = 10, maxValue=40, step=1, callback = None) 
     149 
    131150         
    132151 
     
    168187        if self.data == None: return  
    169188         
    170         if self.textData: 
     189        if self.textData:             
    171190            self.attrRowCombo.insertItem('document') 
    172191            self.attrRowCombo.insertItem('category') 
    173192            self.attrColCombo.insertItem('words') 
    174         else:         
     193        else:             
    175194            for attr in self.data.domain: 
    176195                if attr.varType == orange.VarTypes.Discrete: self.attrRowCombo.insertItem(self.icons[attr.varType], attr.name) 
     
    180199        if self.attrColCombo.count() > 1:  
    181200            self.attrCol = str(self.attrColCombo.text(1)) 
    182         else:                            
     201        else: 
    183202            self.attrCol = str(self.attrColCombo.text(0)) 
    184203             
     
    204223            self.CA = orngCA.CA(caList) 
    205224            try: 
    206                 self.tipsR = [ex['meta'].native() for ex in data] 
     225                self.tipsR = [ex['name'].native() for ex in data] 
    207226            except: 
    208227                self.tipsR = [ex.name for ex in data] 
     
    282301        cor = [cor[i] for i in indices] 
    283302        tipsR = [self.tipsR[i] for i in indices] 
     303        if not self.graph.showRowLabels: tipsR = ['' for i in indices] 
    284304        self.plotPoint(cor, 0, tipsR, "Row points", self.graph.showFilledSymbols)             
    285305             
     
    289309        cor = [cor[i] for i in indices] 
    290310        tipsC = [self.tipsC[i] for i in indices] 
     311        if not self.graph.showColumnLabels: tipsC = ['' for i in indices]         
    291312        self.plotPoint(cor, 1, tipsC, "Column points", self.graph.showFilledSymbols) 
    292313 
  • orange/OrangeWidgets/Visualize/OWCorrAnalysisGraph.py

    r3402 r3552  
    2828##        self.showClusters = 0 
    2929        self.showFilledSymbols = 1 
     30        self.labelSize = 12 
     31        self.showRowLabels = 1 
     32        self.showColumnLabels = 1 
     33        self.maxPoints = 10 
    3034         
    3135##        self.tooltipKind = 1 
     
    97101            self.markLines = [] 
    98102##            print self.tips.positions 
     103             
    99104            cor = [(x, y, self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if abs(xFloat - x)  <= self.radius and abs(yFloat - y) <= self.radius] 
    100105            self.addMarkers(cor, xFloat, yFloat, self.radius) 
     
    117122                self.removeCurve(line) 
    118123            self.markLines = []             
    119             cor = [(x, y, self.tips.texts[i]) for (i,(x,y)) in enumerate(self.tips.positions) if ((xFloat - x)*(xFloat - x) + (yFloat - y)*(yFloat - y) <= self.radius * self.radius)] 
     124            cor = [(x, y, self.tips.texts[i]) for (i,(x,y, cx, cy)) in enumerate(self.tips.positions) if ((xFloat - x)*(xFloat - x) + (yFloat - y)*(yFloat - y) <= self.radius * self.radius)] 
    120125            self.addMarkers(cor, xFloat, yFloat, self.radius) 
    121126##            for x, y, text in cor: 
     
    192197        right = x + r 
    193198##        right = self.transform(QwtPlot.xBottom, right) + 20 
    194 ##        right = self.invTransform(QwtPlot.xBottom, right)  
     199##        right = self.invTransform(QwtPlot.xBottom, right) 
     200        posX = x 
     201        posY = y 
     202        topR = topL = top 
    195203         
    196204        newMark = [] 
    197         for i, (x, y, text) in zip(range(len(cor)), cor): 
     205        points = zip(range(len(cor)), cor) 
     206        #sort using height 
     207        points.sort(cmp = lambda x,y: -cmp(x[1][1], y[1][1])) 
     208        prevY = points[0][1][1] 
     209        i = 1 
     210 
     211#        while i <= len(points) - 1: 
     212#            y = points[i][1][1] 
     213#            if prevY - y < 10 and points[i-1][1][0] < points[i][1][0]: 
     214#                t = points[i] 
     215#                points[i] = points[i-1] 
     216#                points[i-1] = t             
     217#            i = i + 1                 
     218                 
     219         
     220        for i, (x, y, text) in points: 
    198221            side = left 
    199             if not (i & 1): 
    200                 if self.checkPerc(left) > 0: 
    201                     newMark.append((left, self.invTransform(QwtPlot.yLeft, top), text, Qt.AlignLeft, x, y)) 
     222            if not text: continue 
     223             
     224            if x < posX: 
     225                #pokusaj lijevo 
     226                if self.checkPerc(left, len(text)) > 0: 
     227                    newMark.append((left, self.invTransform(QwtPlot.yLeft, topL), text, Qt.AlignLeft, x, y)) 
     228                    topL = topL + self.labelSize 
    202229                else: 
    203                     newMark.append((right, self.invTransform(QwtPlot.yLeft, top), text, Qt.AlignRight, x, y)) 
    204                     top = top + 10                     
     230                    newMark.append((right, self.invTransform(QwtPlot.yLeft, topR), text, Qt.AlignRight, x, y)) 
     231                    topR = topR + self.labelSize 
    205232            else: 
    206                 if self.checkPerc(right) < 70: 
    207                     newMark.append((right, self.invTransform(QwtPlot.yLeft, top), text, Qt.AlignRight, x, y)) 
     233                #pokusaj desno 
     234                if self.checkPerc(right, len(text)) < 70: 
     235                    newMark.append((right, self.invTransform(QwtPlot.yLeft, topR), text, Qt.AlignRight, x, y)) 
     236                    topR = topR + self.labelSize 
    208237                else: 
    209                     top = top + 10 
    210                     newMark.append((left, self.invTransform(QwtPlot.yLeft, top), text, Qt.AlignLeft, x, y)) 
    211                 top = top + 10 
     238                    topL = topL + self.labelSize 
     239                    newMark.append((left, self.invTransform(QwtPlot.yLeft, topL), text, Qt.AlignLeft, x, y)) 
     240                 
     241#            if not (i & 1): 
     242#                if self.checkPerc(left) > 0: 
     243#                        newMark.append((left, self.invTransform(QwtPlot.yLeft, top), text, Qt.AlignLeft, x, y)) 
     244#                else: 
     245#                    newMark.append((right, self.invTransform(QwtPlot.yLeft, top), text, Qt.AlignRight, x, y)) 
     246#                    top = top + 10                     
     247#            else: 
     248#                if self.checkPerc(right) < 70: 
     249#                    newMark.append((right, self.invTransform(QwtPlot.yLeft, top), text, Qt.AlignRight, x, y)) 
     250#                else: 
     251#                    top = top + 10 
     252#                    newMark.append((left, self.invTransform(QwtPlot.yLeft, top), text, Qt.AlignLeft, x, y)) 
     253#                top = top + 10 
     254        prevYR = prevYL = -666 
     255        prevIndL = prevIndR = -1 
     256        prevXL = prevXR = 0 
     257        i = 0 
     258 
     259        while i <= len(newMark) - 1: 
     260            y = newMark[i][1] 
     261            if newMark[i][3] == Qt.AlignLeft: 
     262                if abs(prevYL - y) < abs(prevXL - newMark[i][0]): 
     263                    t = newMark[i] 
     264                    newMark[i] = newMark[prevIndL] 
     265                    newMark[prevIndL] = t 
     266                prevYL = y 
     267                prevXL = newMark[i][0] 
     268                prevIndL = i 
     269            if  newMark[i][3] == Qt.AlignRight: 
     270                if abs(prevYR - y) < abs(prevXR - newMark[i][0]): 
     271                    t = newMark[i] 
     272                    newMark[i] = newMark[prevIndR] 
     273                    newMark[prevIndR] = t 
     274                prevYR = y 
     275                prevXR = newMark[i][0] 
     276                prevIndR = i                 
     277            i = i + 1   
     278     
     279 
    212280             
    213281        for x, y, text, al, x1, y1 in newMark: 
    214             self.addMarker(text, x, y, alignment = al, color = QColor()) 
     282            self.addMarker(text, x, y, alignment = al, color = QColor(255,0,0), size = self.labelSize) 
    215283            self.markLines.append(self.addCurve("", QColor("black"), QColor("black"), 1, QwtCurve.Lines, xData = [x, x1], yData = [y, y1] )) 
    216284 
    217285             
    218     def checkPerc(self, x): 
     286    def checkPerc(self, x, textLen): 
    219287        div = self.axisScale(QwtPlot.xBottom) 
    220288        if x < div.lBound(): 
Note: See TracChangeset for help on using the changeset viewer.