Changeset 8292:3c1bb7be96bf in orange


Ignore:
Timestamp:
06/01/11 17:48:46 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
6e66f0b701c48e75eb1518bfa3aa051add232b39
Message:

Axis labels for discrete attributes

Location:
orange/OrangeWidgets
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Graph/axis.py

    r8290 r8292  
    2828 
    2929from PyQt4.QtGui import QGraphicsItemGroup, QGraphicsLineItem, QGraphicsTextItem, QPainterPath, QGraphicsPathItem, QGraphicsScene 
    30 from PyQt4.QtCore import QLineF 
     30from PyQt4.QtCore import QLineF, qDebug 
    3131 
    3232from palette import * 
     
    6161        path.lineTo(0, 0) 
    6262        self.arrow_path = path 
     63        self.label_items = [] 
    6364 
    6465    def update(self): 
     
    7172        self.title_item.setHtml(self.title) 
    7273        title_pos = (self.line.p1() + self.line.p2())/2 
     74        v = self.line.normalVector().unitVector() 
    7375        if self.title_above: 
    74             v = self.line.normalVector().unitVector() 
    75             title_pos = title_pos + (v.p2() - v.p1())*30 
     76            title_pos = title_pos + (v.p2() - v.p1())*60 
     77        else: 
     78            title_pos = title_pos - (v.p2() - v.p1())*40 
    7679        ## TODO: Move it according to self.label_pos 
    7780        self.title_item.setVisible(self.show_title) 
     
    9699            self.end_arrow_item.setPos(self.line.p2()) 
    97100            self.end_arrow_item.setRotation(-self.line.angle()) 
    98             self.end_arrow_item.setBrush(self.style.brush()) 
    99          
     101            self.end_arrow_item.setBrush(self.style.brush())\ 
     102             
     103        ## Labels 
     104        for i in self.label_items: 
     105            self.scene().removeItem(i) 
     106        del self.label_items[:] 
     107        if self.labels: 
     108            min, max, step = self.scale 
     109            for i in range(len(self.labels)): 
     110                item = QGraphicsTextItem(self) 
     111                item.setHtml( '<center>' + self.labels[i] + '</center>') 
     112                item.setTextWidth(self.line.length()/len(self.labels)) 
     113                label_pos = self.map_to_graph( (i-0.5) * step) 
     114                v = self.line.normalVector().unitVector() 
     115                if self.title_above: 
     116                    label_pos = label_pos + (v.p2() - v.p1())*40 
     117                item.setPos(label_pos) 
     118                item.setRotation(-self.line.angle()) 
     119                self.label_items.append(item) 
     120        
    100121    @staticmethod 
    101122    def make_title(label, unit = None): 
     
    133154        self.update() 
    134155         
    135      
     156    def map_to_graph(self, x): 
     157        min, max, step = self.scale 
     158        return self.line.pointAt( (x-min)/(max-min) ) 
  • orange/OrangeWidgets/QtGraph.py

    r8291 r8292  
    7171        self.axis_margin = 150 
    7272        self.title_margin = 100 
    73         self.showMainTitle = True 
    74         self.mainTitle = "Qt Graph" 
     73        self.graph_margin = 50 
     74        self.mainTitle = None 
     75        self.showMainTitle = False 
    7576        self.XaxisTitle = None 
    7677        self.YLaxisTitle = None 
     
    169170 
    170171    def setMainTitle(self, t): 
     172        qDebug(t) 
    171173        self.mainTitle = t 
    172174        if self.showMainTitle and self.mainTitle: 
     
    274276    def replot(self): 
    275277        graph_rect = QRectF(self.childrenRect()) 
     278        m = self.graph_margin 
     279        graph_rect.adjust(m, m, -m, -m) 
    276280         
    277281        if self.showMainTitle and self.mainTitle: 
Note: See TracChangeset for help on using the changeset viewer.