Changeset 8707:8ca44f2c8145 in orange


Ignore:
Timestamp:
08/14/11 15:58:35 (3 years ago)
Author:
miha <miha.stajdohar@…>
Branch:
default
Convert:
4339987af6ee1c99fb381d681fffac0077342698
Message:
 
File:
1 edited

Legend:

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

    r8700 r8707  
    101101        self.items = None 
    102102        self.links = None 
     103        self.edge_to_row = None 
    103104         
    104105        self.node_label_attributes = [] 
     
    281282            return 
    282283         
    283         colorIndices, colorIndex, minValue, maxValue = self.getColorIndeces(self.items, attribute, self.discPalette) 
     284        colorIndices, colorIndex, minValue, maxValue = self.getColorIndeces(self.links, attribute, self.discPalette) 
    284285        colors = [] 
    285286         
    286         if colorIndex is not None and self.items.domain[colorIndex].varType == orange.VarTypes.Continuous and minValue == maxValue: 
     287        if colorIndex is not None and self.links.domain[colorIndex].varType == orange.VarTypes.Continuous and minValue == maxValue: 
    287288            colors = [self.discEdgePalette[0] for edge in self.networkCurve.edge_indices()] 
    288289         
    289         elif colorIndex is not None and self.items.domain[colorIndex].varType == orange.VarTypes.Continuous: 
     290        elif colorIndex is not None and self.links.domain[colorIndex].varType == orange.VarTypes.Continuous: 
    290291            #colors.update((v, self.contPalette[(float(self.items[v][colorIndex].value) - minValue) / (maxValue - minValue)])  
    291292            #              if str(self.items[v][colorIndex].value) != '?' else  
    292293            #              (v, self.discPalette[0]) for v in nodes) 
    293294            print "TODO set continuous color" 
    294         elif colorIndex is not None and self.items.domain[colorIndex].varType == orange.VarTypes.Discrete: 
     295        elif colorIndex is not None and self.links.domain[colorIndex].varType == orange.VarTypes.Discrete: 
    295296            #colors.update((v, self.discPalette[colorIndices[self.items[v][colorIndex].value]]) for v in nodes) 
    296297            print "TODO set discrete color" 
     298            colors = [self.discEdgePalette[colorIndices[self.links[edge.links_index][colorIndex].value]] for edge in self.networkCurve.edges()] 
    297299        else: 
    298300            colors = [self.discEdgePalette[0] for edge in self.networkCurve.edge_indices()] 
     
    347349                   self.items[node][att]) for att in tooltip_attributes)) \ 
    348350                                                        for node in self.graph)) 
    349          
     351                 
    350352    def change_graph(self, newgraph): 
    351353        old_nodes = set(self.graph.nodes_iter()) 
     
    370372        nodes = self.networkCurve.nodes() 
    371373         
    372         #build edge index 
    373         row_ind = {} 
    374         if self.links is not None and len(self.links) > 0: 
    375           for i, r in enumerate(self.links): 
    376               u = int(r['u'].value) 
    377               v = int(r['v'].value) 
    378               if u in self.graph and v in self.graph: 
    379                   u_dict = row_ind.get(u, {}) 
    380                   v_dict = row_ind.get(v, {}) 
    381                   u_dict[v] = i 
    382                   v_dict[u] = i 
    383                   row_ind[u] = u_dict 
    384                   row_ind[v] = v_dict 
    385          
    386374        #add edges 
    387375        new_edges = self.graph.edges(add_nodes) 
     
    389377        if self.links is not None and len(self.links) > 0: 
    390378            links = self.links 
    391             links_indices = (row_ind[i + 1][j + 1] for (i, j) in new_edges) 
    392             labels = ([str(row[r].value) for r in range(2, len(row))] for row \ 
    393                       in (links[links_index] for links_index in links_indices)) 
     379            links_indices = (self.edge_to_row[i + 1][j + 1] for (i, j) in new_edges) 
    394380             
    395381            if self.graph.is_directed(): 
    396382                edges = [EdgeItem(nodes[i], nodes[j], 
    397                     self.graph[i][j].get('weight', 1), 0, 1, links_index, label, \ 
    398                     parent=self.networkCurve) for ((i, j), links_index, label) in \ 
    399                          zip(new_edges, links_indices, labels)] 
     383                    self.graph[i][j].get('weight', 1), 0, 1, links_index, \ 
     384                    parent=self.networkCurve) for ((i, j), links_index) in \ 
     385                         zip(new_edges, links_indices)] 
    400386            else: 
    401387                edges = [EdgeItem(nodes[i], nodes[j], 
    402                     self.graph[i][j].get('weight', 1), links_index, label) for \ 
    403                     ((i, j), links_index, label) in zip(new_edges, \ 
    404                                         links_indices, labels, parent=self.networkCurve)] 
     388                    self.graph[i][j].get('weight', 1), links_index) for \ 
     389                    ((i, j), links_index) in zip(new_edges, \ 
     390                                        links_indices, parent=self.networkCurve)] 
    405391        elif self.graph.is_directed(): 
    406392            edges = [EdgeItem(nodes[i], nodes[j], self.graph[i][j].get('weight', 1), \ 
     
    441427        self.networkCurve.set_nodes(vertices) 
    442428                 
    443         #build edge index 
    444         row_ind = {} 
     429        #build edge to row index 
     430        self.edge_to_row = {} 
    445431        if self.links is not None and len(self.links) > 0: 
    446           for i, r in enumerate(self.links): 
    447               u = int(r['u'].value) 
    448               v = int(r['v'].value) 
    449               if u in self.graph and v in self.graph: 
    450                   u_dict = row_ind.get(u, {}) 
    451                   v_dict = row_ind.get(v, {}) 
    452                   u_dict[v] = i 
    453                   v_dict[u] = i 
    454                   row_ind[u] = u_dict 
    455                   row_ind[v] = v_dict 
     432            for i, r in enumerate(self.links): 
     433                u = int(r['u'].value) 
     434                v = int(r['v'].value) 
     435                if u - 1 in self.graph and v - 1 in self.graph: 
     436                    u_dict = self.edge_to_row.get(u, {}) 
     437                    v_dict = self.edge_to_row.get(v, {}) 
     438                    u_dict[v] = i 
     439                    v_dict[u] = i 
     440                    self.edge_to_row[u] = u_dict 
     441                    self.edge_to_row[v] = v_dict 
     442                else: 
     443                    print 'could not find edge', u, v 
    456444               
    457445        #add edges 
    458446        if self.links is not None and len(self.links) > 0: 
    459447            links = self.links 
    460             links_indices = (row_ind[i + 1][j + 1] for (i, j) in self.graph.edges()) 
    461             labels = ([str(row[r].value) for r in range(2, len(row))] for row in (links[links_index] for links_index in links_indices)) 
     448            links_indices = (self.edge_to_row[i + 1][j + 1] for (i, j) in self.graph.edges()) 
    462449             
    463450            if self.graph.is_directed(): 
    464451                edges = [EdgeItem(vertices[i], vertices[j], 
    465                     graph[i][j].get('weight', 1), 0, 1, links_index, label, parent=self.networkCurve) for \ 
    466                     ((i, j), links_index, label) in zip(self.graph.edges(), \ 
    467                                                         links_indices, labels)] 
     452                    graph[i][j].get('weight', 1), 0, 1, links_index, \ 
     453                    parent=self.networkCurve) for ((i, j), links_index) in \ 
     454                         zip(self.graph.edges(), links_indices)] 
    468455            else: 
    469456                edges = [EdgeItem(vertices[i], vertices[j], 
    470                     graph[i][j].get('weight', 1), links_index, label, parent=self.networkCurve) for \ 
    471                     ((i, j), links_index, label) in zip(self.graph.edges(), \ 
    472                                                         links_indices, labels)] 
     457                    graph[i][j].get('weight', 1), links_index, \ 
     458                    parent=self.networkCurve) for ((i, j), links_index) in \ 
     459                         zip(self.graph.edges(), links_indices)] 
     460                 
    473461        elif self.graph.is_directed(): 
    474462            edges = [EdgeItem(vertices[i], vertices[j], 
Note: See TracChangeset for help on using the changeset viewer.