Changeset 8380:5a74ad8d9760 in orange


Ignore:
Timestamp:
07/07/11 00:16:40 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
06c226127dfb4ff5f4f0b42ef9dbab22c9606d7b
Message:

ScatterPlot3D + OWGraph3D: added legend

Location:
orange/OrangeWidgets
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/OWGraph3D.py

    r8377 r8380  
    137137        self.legend_size = [200, 50] 
    138138        self.dragging_legend = False 
     139        self.legend_items = [] 
    139140 
    140141        self.face_symbols = True 
     
    253254    def resizeGL(self, width, height): 
    254255        glViewport(0, 0, width, height) 
    255         glMatrixMode(GL_PROJECTION) 
    256256 
    257257    def paintGL(self): 
     
    263263        divide = self.zoom*10. 
    264264        if self.ortho: 
    265             glOrtho(-width/divide, width/divide, -height/divide, height/divide, -1, 1000) 
     265            # TODO: fix ortho 
     266            glOrtho(-width/divide, width/divide, -height/divide, height/divide, -1, 2000) 
    266267        else: 
    267268            aspect = float(width) / height if height != 0 else 1 
    268             gluPerspective(30.0, aspect, 0.1, 100) 
     269            gluPerspective(30.0, aspect, 0.1, 2000) 
    269270        glMatrixMode(GL_MODELVIEW) 
    270271        glLoadIdentity() 
     
    337338        glVertex2f(x+t,   y+h-t) 
    338339        glEnd() 
     340 
     341        # TODO: clean this up 
     342        glColor4f(0.1, 0.1, 0.1, 1) 
     343        item_pos_y = y + 2*t + 10 
     344        for shape, text in self.legend_items: 
     345            if shape == 0: 
     346                glBegin(GL_TRIANGLES) 
     347                glVertex2f(x+10, item_pos_y) 
     348                glVertex2f(x+20, item_pos_y) 
     349                glVertex2f(x+15, item_pos_y-10) 
     350                glEnd() 
     351 
     352            self.renderText(x+20+4*t, item_pos_y, text) 
     353            item_pos_y += 15 
     354 
     355    def add_legend_item(self, shape, text): 
     356        self.legend_items.append((shape, text)) 
    339357 
    340358    def set_x_axis_title(self, title): 
     
    576594                outline_indices.extend([index+1, index+2]) 
    577595                index += 3 
     596 
     597        # Build Vertex Buffer + Vertex Array Object. 
    578598        vao = c_int() 
    579599        glGenVertexArrays(1, byref(vao)) 
     
    684704    def clear(self): 
    685705        self.commands = [] 
     706        self.legend_items = [] 
    686707 
    687708 
  • orange/OrangeWidgets/Prototypes/OWScatterPlot3D.py

    r8377 r8380  
    152152            self.data_array = array 
    153153 
    154             self.x_attr, self.y_attr, self.z_attr = numpy.min([[0, 1, 2], [len(self.axis_candidate_attrs) - 1]*3], axis=0) 
     154            self.x_attr, self.y_attr, self.z_attr = numpy.min([[0, 1, 2], 
     155                                                               [len(self.axis_candidate_attrs) - 1]*3 
     156                                                              ], axis=0) 
    155157            self.color_attr = max(len(self.axis_candidate_attrs) - 1, 0) 
    156  
    157             self.openContext("", data) 
     158            self.openContext('', data) 
    158159 
    159160    def setSubsetData(self, data=None): 
    160       self.subsetData = data 
     161        self.subsetData = data 
    161162 
    162163    def handleNewSignals(self): 
    163       self.update_graph() 
     164        self.update_graph() 
    164165 
    165166    def on_axis_change(self): 
    166       if self.data is not None: 
    167         self.update_graph() 
     167        if self.data is not None: 
     168            self.update_graph() 
    168169 
    169170    def on_checkbox_update(self): 
     
    205206 
    206207        shapes = None 
     208        legend_items = [] 
    207209        if self.shape_attr > 0: 
    208210            i,shape_attr = self.discrete_attrs[self.shape_attr] 
     211            legend_items = shape_attr.values 
    209212            if shape_attr.varType == orange.VarTypes.Discrete: 
    210213                # Map discrete attribute to [0...num shapes-1] 
     
    212215                num_shapes = 0 
    213216                unique_shapes = {} 
    214                 for shape in shapes: 
     217                for j,shape in enumerate(shapes): 
    215218                    if shape not in unique_shapes: 
    216219                        unique_shapes[shape] = num_shapes 
     
    228231        self.graph.set_x_axis_title(self.axis_candidate_attrs[self.y_attr].name) 
    229232        self.graph.set_x_axis_title(self.axis_candidate_attrs[self.z_attr].name) 
     233        for i, value in enumerate(legend_items): 
     234            self.graph.add_legend_item(i, value) 
    230235 
    231236    def get_axis_data(self, x_ind, y_ind, z_ind): 
Note: See TracChangeset for help on using the changeset viewer.