Changeset 8837:8b44f46a0b10 in orange


Ignore:
Timestamp:
08/29/11 23:26:32 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
d0a8ff674b9de9775327f75ea341fe16dce8fa7c
Message:

Moved palette management to owplot3d; added gradient in legend for continuous color attr

Location:
orange/OrangeWidgets
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • orange/OrangeWidgets/Visualize Qt/OWLinProj3DPlot.py

    r8828 r8837  
    293293 
    294294        if self.data_has_discrete_class: 
    295             self.discPalette.setNumberOfColors(len(self.data_domain.classVar.values)) 
     295            self.discrete_palette.setNumberOfColors(len(self.data_domain.classVar.values)) 
    296296 
    297297        use_different_symbols = self.useDifferentSymbols and self.data_has_discrete_class and\ 
     
    311311        if color_discrete: 
    312312            for i in range(len(self.data_domain.classVar.values)): 
    313                 c = self.discPalette[i] 
     313                c = self.discrete_palette[i] 
    314314                colors.append(c) 
    315315 
     
    328328            for ind in range(num): 
    329329                symbol = ind if use_different_symbols else def_symbol 
    330                 self.legend().add_item(self.data_domain.classVar.name, values[ind], OWPoint(symbol, self.discPalette[ind], def_size)) 
     330                self.legend().add_item(self.data_domain.classVar.name, values[ind], OWPoint(symbol, self.discrete_palette[ind], def_size)) 
    331331 
    332332        if use_different_symbols and not color_discrete: 
     
    354354                continue 
    355355            if self.useDifferentColors: 
    356                 color = self.discPalette.getRGB(self.original_data[self.data_class_index][i]) 
     356                color = self.discrete_palette.getRGB(self.original_data[self.data_class_index][i]) 
    357357            else: 
    358358                color = (0, 0, 0) 
     
    411411        pass 
    412412 
    413     def color(self, role, group=None): 
    414         if group: 
    415             return self.palette().color(group, role) 
    416         else: 
    417             return self.palette().color(role) 
    418  
    419     def set_palette(self, palette): 
    420         self.update() 
    421  
    422413    def getSelectionsAsExampleTables(self, attrList, useAnchorData=1, addProjectedPositions=0): 
    423414        return (None, None) 
     
    460451            factor = value / max_value 
    461452            if self.useDifferentColors: 
    462                 color = self.discPalette.getRGB(example[self.data_class_index]) 
     453                color = self.discrete_palette.getRGB(example[self.data_class_index]) 
    463454            else: 
    464455                color = (0, 0, 0) 
  • orange/OrangeWidgets/Visualize Qt/OWScatterPlot3D.py

    r8834 r8837  
    5252        orngScaleScatterPlotData.__init__(self) 
    5353 
    54         self.disc_palette = ColorPaletteGenerator() 
    5554        self._theme = LightTheme() 
    5655        self.show_grid = True 
    5756        self.show_chassis = True 
    58          
     57 
    5958        self.animate_plot = False 
    60  
    61     def activate_zooming(self): 
    62         print('activate_zooming') 
    6359 
    6460    def set_data(self, data, subset_data=None, **args): 
     
    8379            if self.data_domain[color_attr].varType == Discrete: 
    8480                color_discrete = True 
    85                 self.disc_palette.setNumberOfColors(len(self.data_domain[color_attr].values)) 
     81                self.discrete_palette.setNumberOfColors(len(self.data_domain[color_attr].values)) 
    8682 
    8783        symbol_index = -1 
     
    115111        if color_discrete: 
    116112            for i in range(len(self.data_domain[color_attr].values)): 
    117                 c = self.disc_palette[i] 
     113                c = self.discrete_palette[i] 
    118114                colors.append(c) 
    119115 
     
    165161            values = get_variable_values_sorted(self.data_domain[color_attr]) 
    166162            for ind in range(num): 
    167                 self.legend().add_item(color_attr, values[ind], OWPoint(def_symbol, self.disc_palette[ind], def_size)) 
     163                self.legend().add_item(color_attr, values[ind], OWPoint(def_symbol, self.discrete_palette[ind], def_size)) 
    168164 
    169165        if symbol_index != -1: 
     
    177173            values = get_variable_values_sorted(self.data_domain[size_attr]) 
    178174            for ind in range(num): 
    179                 self.legend().add_item(color_attr, values[ind], OWPoint(def_symbol, def_color, 6 + round(ind * 5 / len(values)))) 
     175                self.legend().add_item(size_attr, values[ind], OWPoint(def_symbol, def_color, 6 + round(ind * 5 / len(values)))) 
    180176 
    181177        if color_index != -1 and self.data_domain[color_attr].varType == Continuous: 
    182178            self.legend().add_color_gradient(color_attr, [("%%.%df" % self.data_domain[color_attr].numberOfDecimals % v) for v in self.attr_values[color_attr]]) 
    183179 
     180        self.legend().max_size = QSize(400, 400) 
     181        self.legend().set_floating(True) 
    184182        self.legend().set_orientation(Qt.Vertical) 
    185         self.legend().max_size = QSize(400, 400) 
    186183        if self.legend().pos().x() == 0: 
    187184            self.legend().setPos(QPointF(100, 100)) 
    188185        self.legend().update_items() 
     186        self.legend().setVisible(self.show_legend) 
    189187 
    190188        ## Axes 
     
    201199 
    202200        self.update() 
    203  
    204     # TODO 
    205     def color(self, role, group=None): 
    206         return QColor(200, 50, 50) 
    207         #if group: 
    208         #    return self.palette().color(group, role) 
    209         #else: 
    210         #    return self.palette().color(role) 
    211201 
    212202    def before_draw(self): 
  • orange/OrangeWidgets/Visualize Qt/OWSphereviz3D.py

    r8820 r8837  
    186186            projection = QMatrix4x4() 
    187187            projection.perspective(90., float(self.width()) / self.height(), 
    188                                    self.perspective_near, self.perspective_far) 
     188                                   0.01, 5.) 
    189189            self.projection = projection 
    190190        else: 
  • orange/OrangeWidgets/plot/owlegend.py

    r8820 r8837  
    9393    def __init__(self, palette, values, parent): 
    9494        QGraphicsObject.__init__(self, parent) 
     95        self.parent = parent 
    9596        self.palette = palette 
    9697        self.values = values 
     
    126127            x = 30 
    127128            for item in self.label_items: 
    128                 move_item_xy(item, x, y) 
     129                move_item_xy(item, x, y, self.parent.graph.animate_plot) 
    129130                y += interval 
    130131            self.rect = QRectF(10, 0, self.gradient_width + max([item.boundingRect().width() for item in self.label_items]), self.label_items[0].boundingRect().height() * max(5, len(self.label_items))) 
     
    143144            y = 30 
    144145            for item in self.label_items: 
    145                 move_item_xy(item, x, y) 
     146                move_item_xy(item, x, y, self.parent.graph.animate_plot) 
    146147                x += interval 
    147148            self.rect = QRectF(0, 0, total_width, self.gradient_width + height) 
  • orange/OrangeWidgets/plot/owplot3d.py

    r8834 r8837  
    2222from PyQt4.QtGui import * 
    2323from PyQt4 import QtOpenGL 
     24 
    2425from OWDlgs import OWChooseImageSizeDlg 
     26from Orange.misc import deprecated_attribute 
    2527 
    2628import orange 
     
    2931from owplot import OWPlot 
    3032from owlegend import OWLegend, OWLegendItem, OWLegendTitle, OWLegendGradient 
     33 
     34from OWColorPalette import ColorPaletteGenerator 
    3135 
    3236import OpenGL 
     
    149153 
    150154    def _paint(self, widget): 
     155        '''Does all the drawing itself.''' 
    151156        glDisable(GL_DEPTH_TEST) 
    152157        glDisable(GL_BLEND) 
     
    176181                    pos = self.pos() + item.pos() + symbol.pos() 
    177182                    self._draw_symbol(pos, symbol) 
    178                 # TODO: gradient 
     183                elif isinstance(item, OWLegendGradient): 
     184                    widget.qglColor(widget._theme.background_color) 
     185                    pos = self.pos() + item.pos() 
     186                    proxy = lambda: None 
     187                    proxy.rect = lambda: item.rect 
     188                    self._draw_item_background(pos, proxy) 
     189 
     190                    widget.qglColor(widget._theme.labels_color) 
     191                    for label in item.label_items: 
     192                        pos = self.pos() + item.pos() + label.pos() + offset + QPointF(5, 0) 
     193                        widget.renderText(pos.x(), pos.y(), label.toPlainText(), label.font()) 
     194 
     195                    pos = self.pos() + item.pos() + item.gradient_item.pos() 
     196                    rect = item.gradient_item.rect().normalized().adjusted(pos.x(), pos.y(), pos.x(), pos.y()) 
     197                    glBegin(GL_QUADS) 
     198                    glColor3f(0, 0, 0) 
     199                    glVertex2f(rect.left(), rect.top()) 
     200                    glColor3f(0, 0, 1) 
     201                    glVertex2f(rect.left(), rect.bottom()) 
     202                    glVertex2f(rect.right(), rect.bottom()) 
     203                    glColor3f(0, 0, 0) 
     204                    glVertex2f(rect.right(), rect.top()) 
     205                    glEnd() 
    179206 
    180207class OWPlot3D(orangeqt.Plot3D): 
     
    270297 
    271298        self.data = None 
     299 
     300        self.continuous_palette = ColorPaletteGenerator(numberOfColors=-1) 
     301        self.discrete_palette = ColorPaletteGenerator() 
    272302 
    273303    def __del__(self): 
     
    11771207    theme = pyqtProperty(PlotTheme, get_theme, set_theme) 
    11781208 
     1209    def color(self, role, group = None): 
     1210        if group: 
     1211            return self.palette().color(group, role) 
     1212        else: 
     1213            return self.palette().color(role) 
     1214 
     1215    def set_palette(self, p): 
     1216        self.setPalette(p) 
     1217        self.update() 
     1218 
    11791219    def show_tooltip(self, text): 
    11801220        x, y = self.mouse_position.x(), self.mouse_position.y() 
     
    11981238        self.additional_scale = array([0., 0., 0.]) 
    11991239 
     1240    contPalette = deprecated_attribute("contPalette", "continuous_palette") 
     1241    discPalette = deprecated_attribute("discPalette", "discrete_palette") 
    12001242 
    12011243if __name__ == "__main__": 
Note: See TracChangeset for help on using the changeset viewer.