Changeset 8360:5c77de8d0d1b in orange


Ignore:
Timestamp:
07/06/11 01:11:08 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
c58b019229e11b7de051f66b54520b465bb3a008
Message:

Scatterplot3D: general/settings tab, point properties

Location:
orange/OrangeWidgets
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/OWGraph3D.py

    r8359 r8360  
    8787glDrawElements = gl.glDrawElements 
    8888glDrawArrays = gl.glDrawArrays 
     89glBindBuffer = gl.glBindBuffer 
     90glBufferData = gl.glBufferData 
    8991 
    9092 
     
    113115        self.mouse_pos = [100, 100] # TODO: get real mouse position, calculate camera, fix the initial jump 
    114116 
     117        self.labels_font = QFont('Helvetice', 8) 
    115118        self.axis_title_font = QFont('Helvetica', 10, QFont.Bold) 
    116119        self.ticks_font = QFont('Helvetica', 9) 
     
    577580        glBindVertexArray(0) 
    578581        glBindBuffer(GL_ARRAY_BUFFER, 0) 
    579         glDisableVertexAttribArray(0) 
    580         glDisableVertexAttribArray(1) 
    581         glDisableVertexAttribArray(2) 
    582582 
    583583        # Outline: 
     
    683683    colors = [[c.red()/255., c.green()/255., c.blue()/255., 0.8] for c in colors] 
    684684 
    685     w.scatter(x, y, z, c=colors) 
     685    w.scatter(x, y, z, colors=colors) 
    686686    app.exec_() 
  • orange/OrangeWidgets/Prototypes/OWScatterPlot3D.py

    r8342 r8360  
    1919        self.outputs = [] 
    2020 
    21         self.xAttr = 0 
    22         self.yAttr = 0 
    23         self.zAttr = 0 
    24  
    25         self.colorAttr = None 
    26         self.sizeAttr = None 
    27         self.labelAttr = None 
    28  
    29         self.pointSize = 5 
    30         self.alphaValue = 255 
    31  
    32         self.xAttrCB = OWGUI.comboBox(self.controlArea, self, "xAttr", box="X-axis Attribute", 
     21        self.x_attr = 0 
     22        self.y_attr = 0 
     23        self.z_attr = 0 
     24 
     25        self.color_attr = None 
     26        self.size_attr = None 
     27        self.label_attr = None 
     28 
     29        self.point_size = 5 
     30        self.alpha_value = 255 
     31 
     32        self.tabs = OWGUI.tabWidget(self.controlArea) 
     33        self.general_tab = OWGUI.createTabPage(self.tabs, 'General') 
     34        self.settings_tab = OWGUI.createTabPage(self.tabs, 'Settings') 
     35 
     36        self.x_attr_cb = OWGUI.comboBox(self.general_tab, self, "xAttr", box="X-axis Attribute", 
    3337            tooltip="Attribute to plot on X axis.", 
    3438            callback=self.onAxisChange 
    3539            ) 
    3640 
    37         self.yAttrCB = OWGUI.comboBox(self.controlArea, self, "yAttr", box="Y-axis Attribute", 
     41        self.y_attr_cb = OWGUI.comboBox(self.general_tab, self, "yAttr", box="Y-axis Attribute", 
    3842            tooltip="Attribute to plot on Y axis.", 
    3943            callback=self.onAxisChange 
    4044            ) 
    4145 
    42         self.zAttrCB = OWGUI.comboBox(self.controlArea, self, "zAttr", box="Z-axis Attribute", 
     46        self.z_attr_cb = OWGUI.comboBox(self.general_tab, self, "zAttr", box="Z-axis Attribute", 
    4347            tooltip="Attribute to plot on Z axis.", 
    4448            callback=self.onAxisChange 
    4549            ) 
    4650 
    47         self.colorAttrCB = OWGUI.comboBox(self.controlArea, self, "colorAttr", box="Point color", 
     51        self.color_attr_cb = OWGUI.comboBox(self.general_tab, self, "colorAttr", box="Point color", 
    4852            tooltip="Attribute to use for point color", 
    4953            callback=self.onAxisChange) 
    5054 
    51         self.sizeAttrCB = OWGUI.comboBox(self.controlArea, self, "sizeAttr", box="Point Size", 
     55        # Additional point properties (labels, size, shape). 
     56        additional_box = OWGUI.widgetBox(self.general_tab, 'Additional Point Properties') 
     57        self.size_attr_cb = OWGUI.comboBox(additional_box, self, "sizeAttr", box="Point Size:", 
    5258            tooltip="Attribute to use for pointSize", 
    5359            callback=self.onAxisChange, 
    54             ) 
    55  
    56         OWGUI.hSlider(self.controlArea, self, "pointSize", box="Max. point size", 
     60            indent = 10, 
     61            emptyString = '(Same size)', 
     62            valueType = str 
     63            ) 
     64 
     65        self.shape_attr_cb = OWGUI.comboBox(additional_box, self, "shapeAttr", box="Point Shape:", 
     66            tooltip="Attribute to use for pointShape", 
     67            callback=self.onAxisChange, 
     68            ) 
     69 
     70        self.label_attr_cb = OWGUI.comboBox(additional_box, self, "labelAttr", box="Point Label:", 
     71            tooltip="Attribute to use for pointLabel", 
     72            callback=self.onAxisChange, 
     73            ) 
     74 
     75 
     76        OWGUI.hSlider(self.settings_tab, self, "point_size", box="Max. point size", 
    5777            minValue=1, maxValue=10, 
    5878            tooltip="Maximum point size", 
     
    6080            ) 
    6181 
    62         OWGUI.hSlider(self.controlArea, self, "alphaValue", box="Transparency", 
     82        OWGUI.hSlider(self.settings_tab, self, "alpha_value", box="Transparency", 
    6383            minValue=10, maxValue=255, 
    6484            tooltip="Point transparency value", 
     
    7090        # TODO: add grid enable/disable options 
    7191 
    72         OWGUI.rubber(self.controlArea) 
     92        OWGUI.rubber(self.general_tab) 
    7393 
    7494        self.graph = OWGraph3D(self) 
     
    82102      self.closeContext("") 
    83103      self.data = data 
    84       self.xAttrCB.clear() 
    85       self.yAttrCB.clear() 
    86       self.zAttrCB.clear() 
    87       self.colorAttrCB.clear() 
    88       self.sizeAttrCB.clear() 
     104      self.x_attr_cb.clear() 
     105      self.y_attr_cb.clear() 
     106      self.z_attr_cb.clear() 
     107      self.color_attr_cb.clear() 
     108      self.size_attr_cb.clear() 
     109      self.shape_attr_cb.clear() 
    89110      if self.data is not None: 
    90111        self.allAttrs = data.domain.variables + data.domain.getmetas().values() 
    91112        self.axisCandidateAttrs = [attr for attr in self.allAttrs if attr.varType in [orange.VarTypes.Continuous, orange.VarTypes.Discrete]] 
    92113 
    93         self.colorAttrCB.addItem("<None>") 
    94         self.sizeAttrCB.addItem("<None>") 
     114        self.color_attr_cb.addItem("<None>") 
     115        self.size_attr_cb.addItem("<None>") 
     116        self.shape_attr_cb.addItem("<None>") 
    95117        icons = OWGUI.getAttributeIcons()  
    96118        for attr in self.axisCandidateAttrs: 
    97           self.xAttrCB.addItem(icons[attr.varType], attr.name) 
    98           self.yAttrCB.addItem(icons[attr.varType], attr.name) 
    99           self.zAttrCB.addItem(icons[attr.varType], attr.name) 
    100           self.colorAttrCB.addItem(icons[attr.varType], attr.name) 
    101           self.sizeAttrCB.addItem(icons[attr.varType], attr.name) 
     119            self.x_attr_cb.addItem(icons[attr.varType], attr.name) 
     120            self.y_attr_cb.addItem(icons[attr.varType], attr.name) 
     121            self.z_attr_cb.addItem(icons[attr.varType], attr.name) 
     122            self.color_attr_cb.addItem(icons[attr.varType], attr.name) 
     123            self.size_attr_cb.addItem(icons[attr.varType], attr.name) 
    102124 
    103125        array, c, w = self.data.toNumpyMA() 
     
    106128        self.dataArray = array 
    107129 
    108         self.xAttr, self.yAttr, self.zAttr = numpy.min([[0, 1, 2], [len(self.axisCandidateAttrs) - 1]*3], axis=0) 
    109         self.colorAttr = max(len(self.axisCandidateAttrs) - 1, 0) 
     130        self.x_attr, self.y_attr, self.z_attr = numpy.min([[0, 1, 2], [len(self.axisCandidateAttrs) - 1]*3], axis=0) 
     131        self.color_attr = max(len(self.axisCandidateAttrs) - 1, 0) 
    110132 
    111133        self.openContext("", data) 
     
    128150      X, Y, Z, mask = self.getAxisData(xInd, yInd, zInd) 
    129151 
    130       if self.colorAttr > 0: 
    131         colorAttr = self.axisCandidateAttrs[self.colorAttr - 1] 
    132         C = self.dataArray[:, self.colorAttr - 1] 
    133         if colorAttr.varType == orange.VarTypes.Discrete: 
    134           palette = OWColorPalette.ColorPaletteHSV(len(colorAttr.values)) 
     152      if self.color_attr > 0: 
     153        color_attr = self.axisCandidateAttrs[self.color_attr - 1] 
     154        C = self.dataArray[:, self.color_attr - 1] 
     155        if color_attr.varType == orange.VarTypes.Discrete: 
     156          palette = OWColorPalette.ColorPaletteHSV(len(color_attr.values)) 
    135157          colors = [palette[int(value)] for value in C.ravel()] 
    136           colors = [[c.red()/255., c.green()/255., c.blue()/255., self.alphaValue/255.] for c in colors] 
     158          colors = [[c.red()/255., c.green()/255., c.blue()/255., self.alpha_value/255.] for c in colors] 
    137159        else: 
    138160          palette = OWColorPalette.ColorPaletteBW() 
     
    140162          C = (C - minC) / (maxC - minC) 
    141163          colors = [palette[value] for value in C.ravel()] 
    142           colors = [[c.red()/255., c.green()/255., c.blue()/255., self.alphaValue/255.] for c in colors] 
     164          colors = [[c.red()/255., c.green()/255., c.blue()/255., self.alpha_value/255.] for c in colors] 
    143165      else: 
    144166        colors = "b" 
    145167 
    146       if self.sizeAttr > 0: 
    147         sizeAttr = self.axisCandidateAttrs[self.sizeAttr - 1] 
    148         S = self.dataArray[:, self.sizeAttr - 1] 
    149         if sizeAttr.varType == orange.VarTypes.Discrete: 
    150           sizes = [(v + 1) * len(sizeAttr.values) / (11 - self.pointSize) for v in S] 
     168      if self.size_attr > 0: 
     169        size_attr = self.axisCandidateAttrs[self.size_attr - 1] 
     170        S = self.dataArray[:, self.size_attr - 1] 
     171        if size_attr.varType == orange.VarTypes.Discrete: 
     172          sizes = [(v + 1) * len(size_attr.values) / (11 - self.point_size) for v in S] 
    151173        else: 
    152174          min, max = numpy.min(S), numpy.max(S) 
    153           sizes = [(v - min) * self.pointSize / (max-min) for v in S] 
     175          sizes = [(v - min) * self.point_size / (max-min) for v in S] 
    154176      else: 
    155177        sizes = 1 
     
    157179      self.graph.clear() 
    158180      self.graph.scatter(X, Y, Z, colors, sizes) 
    159       self.graph.setXaxisTitle(self.axisCandidateAttrs[self.xAttr].name) 
    160       self.graph.setYaxisTitle(self.axisCandidateAttrs[self.yAttr].name) 
    161       self.graph.setZaxisTitle(self.axisCandidateAttrs[self.zAttr].name) 
     181      self.graph.set_x_axis_title(self.axisCandidateAttrs[self.x_attr].name) 
     182      self.graph.set_x_axis_title(self.axisCandidateAttrs[self.y_attr].name) 
     183      self.graph.set_x_axis_title(self.axisCandidateAttrs[self.z_attr].name) 
    162184 
    163185    def getAxisData(self, xInd, yInd, zInd): 
     
    167189 
    168190    def getAxesIndices(self): 
    169       return self.xAttr, self.yAttr, self.zAttr 
     191      return self.x_attr, self.y_attr, self.z_attr 
    170192 
    171193if __name__ == "__main__": 
Note: See TracChangeset for help on using the changeset viewer.