Changeset 8440:8060e4fc247f in orange


Ignore:
Timestamp:
07/25/11 10:18:36 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
7a61697dd0e74179638fbceebe89ecca70bc4616
Message:

Make all axis labels on cartesian (X and Y) axes horizontal

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/plot/owaxis.py

    r8438 r8440  
    8181        self.zoomable = False 
    8282        self.update_callback = None 
     83        self.max_text_width = 50 
     84        self.text_margin = 5 
    8385         
    8486    def update_ticks(self): 
     
    183185         
    184186        if self.scale: 
    185             min, max, step = self.scale 
     187            _min, _max, step = self.scale 
    186188        else: 
    187189            step = 1 
     190        hs = 0.5 * step 
    188191         
    189192        test_rect = QRectF(self.graph_line.p1(),  self.graph_line.p2()).normalized() 
    190193        test_rect.adjust(-1, -1, 1, 1) 
    191         v = self.graph_line.normalVector().unitVector() 
     194         
     195        n_v = self.graph_line.normalVector().unitVector() 
     196        if self.title_above: 
     197            n_p = n_v.p2() - n_v.p1() 
     198        else: 
     199            n_p = n_v.p1() - n_v.p2() 
     200        l_v = self.graph_line.unitVector() 
     201        l_p = l_v.p2() - l_v.p1() 
    192202        for i in range(n): 
    193203            pos, text, size = self._ticks[i] 
    194             label_pos = self.map_to_graph( pos ) 
    195             if not test_rect.contains(label_pos): 
     204            tick_pos = self.map_to_graph( pos ) 
     205            if not test_rect.contains(tick_pos): 
    196206                self.tick_items[i].setVisible(False) 
    197207                self.label_items[i].setVisible(False) 
    198208                continue 
    199             hs = 0.5*step 
    200             label_pos = self.map_to_graph(pos - hs) 
    201209            item = self.label_items[i] 
    202210            item.setVisible(True) 
    203211            if not zoom_only: 
    204212                item.setHtml( '<center>' + Qt.escape(text.strip()) + '</center>') 
    205             item.setTextWidth( QLineF(self.map_to_graph(pos - hs), self.map_to_graph(pos + hs) ).length() ) 
    206             if self.title_above: 
    207                 label_pos = label_pos + (v.p2() - v.p1())*30 
     213            if self.id not in CartesianAxes: 
     214                item.setRotation(-self.graph_line.angle()) 
     215             
     216            item.setTextWidth(-1) 
     217            if self.id in YAxes: 
     218                w = min(item.boundingRect().width(), self.max_text_width) 
     219                label_pos = tick_pos + n_p * (w + self.text_margin) + l_p * item.boundingRect().height()/2 
     220            else: 
     221                w = min(item.boundingRect().width(), QLineF(self.map_to_graph(pos - hs), self.map_to_graph(pos + hs) ).length()) 
     222                label_pos = tick_pos + n_p * self.text_margin - l_p * w/2 
    208223            item.setPos(label_pos) 
     224            item.setTextWidth(w) 
    209225             
    210226            item = self.tick_items[i] 
Note: See TracChangeset for help on using the changeset viewer.