Changeset 8632:ead277dca341 in orange


Ignore:
Timestamp:
08/08/11 11:29:13 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
cb2b6df975c9253ba11e12f84f18f77adae9c846
Message:

Improvements for the Parallel coordinates widget

Location:
orange/OrangeWidgets
Files:
2 edited

Legend:

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

    r8621 r8632  
    4949        if attributes != self.visualizedAttributes: 
    5050            self.selectionConditions = {}       # reset selections 
     51             
     52        self.clear() 
    5153 
    5254        self.visualizedAttributes = [] 
     
    186188        self.remove_all_axes() 
    187189        for i in range(len(attributes)): 
     190            id = UserAxis + i 
    188191        self.add_axis(UserAxis + i, line = QLineF(i, 0, i, 1), arrows = AxisStart | AxisEnd) 
     192        self.axes[id].always_horizontal_text = True 
    189193            if self.showAttrValues == 1: 
    190194                attr = self.dataDomain[attributes[i]] 
    191195                if attr.varType == orange.VarTypes.Continuous: 
    192             self.set_axis_scale(UserAxis + i, 0.0-0.01, 1.0+0.01) 
     196            self.set_axis_scale(id, 0.0-0.01, 1.0+0.01) 
    193197                elif attr.varType == orange.VarTypes.Discrete: 
    194198            attrVals = getVariableValuesSorted(self.dataDomain[attributes[i]]) 
    195             self.set_axis_labels(UserAxis + i, attrVals) 
     199            self.set_axis_labels(id, attrVals) 
    196200 
    197201        # ############################################## 
     
    539543    def update_properties(self): 
    540544    if self.fitted: 
    541         self._item.setPath(selg.cubicPath()) 
     545        path = self.cubicPath() 
    542546    else: 
    543547        path = QPainterPath() 
    544548        for x, y in self.data(): 
    545549        path.lineTo(x, y) 
    546         self._item.setPath(path) 
     550        self._item.setPath(self.graph_transform().map(path)) 
     551        self._item.setPen(self.pen()) 
    547552     
    548     def drawCurve(self, painter, style, xMap, yMap, iFrom, iTo): 
    549         low = max(0, int(math.floor(xMap.s1()))) 
    550         high = min(self.attrCount-1, int(math.ceil(xMap.s2()))) 
    551         painter.setPen(self.pen()) 
    552         if not self.testCurveAttribute(OWCurve.Fitted): 
    553             for i in range(self.dataSize() / self.attrCount): 
    554                 start = self.attrCount * i + low 
    555                 end = self.attrCount * i + high  
    556                 self.drawLines(painter, xMap, yMap, start, end) 
    557         else: 
    558             painter.save() 
    559 #            painter.scale(xMap.transform(1.0), yMap.transform(1.0)) 
    560             painter.strokePath(self.cubicPath(xMap, yMap), self.pen()) 
    561 #            painter.strokePath(self._cubic, self.pen()) 
    562             painter.restore() 
    563  
    564553    def cubicPath(self): 
    565554        path = QPainterPath() 
     
    568557#        data = [QPointF(transform(x, y)) for x, y in zip(self.xData, self.yData)] 
    569558        data = self.data() 
    570         for i in range(self.dataSize() / self.attrCount): 
     559        for i in range(len(data) / self.attrCount): 
    571560            segment = data[i*self.attrCount: (i + 1)*self.attrCount] 
    572561            for i, p in enumerate(segment[:-1]): 
  • orange/OrangeWidgets/plot/owaxis.py

    r8609 r8632  
    8383        self.max_text_width = 50 
    8484        self.text_margin = 5 
     85        self.always_horizontal_text = False 
    8586         
    8687    def update_ticks(self): 
     
    211212            if not zoom_only: 
    212213                item.setHtml( '<center>' + Qt.escape(text.strip()) + '</center>') 
    213             if self.id not in CartesianAxes: 
     214            if self.id not in CartesianAxes and not self.always_horizontal_text: 
    214215                item.setRotation(-self.graph_line.angle()) 
    215216             
    216217            item.setTextWidth(-1) 
    217             if self.id in YAxes: 
     218            if self.id in YAxes or self.always_horizontal_text: 
    218219                w = min(item.boundingRect().width(), self.max_text_width) 
    219220                label_pos = tick_pos + n_p * (w + self.text_margin) + l_p * item.boundingRect().height()/2 
Note: See TracChangeset for help on using the changeset viewer.