Changeset 3847:e0d9de077ee8 in orange


Ignore:
Timestamp:
05/13/08 15:18:50 (6 years ago)
Author:
miha <miha.stajdohar@…>
Branch:
default
Convert:
6374c144411e8982f200208179de94ebd1a514ae
Message:

show arrows
show edge weights

Location:
orange/OrangeWidgets/Prototypes
Files:
2 edited

Legend:

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

    r3841 r3847  
    3232         
    3333        #self.contextHandlers = {"": DomainContextHandler("", [ContextField("attributes", selected="markerAttributes"), ContextField("attributes", selected="tooltipAttributes"), "color"])} 
    34         self.inputs = [("Network", Network, self.setGraph), ("Example Subset", orange.ExampleTable, self.setExampleSubset)] 
     34        self.inputs = [("Network", Network, self.setGraph ), ("Example Subset", orange.ExampleTable, self.setExampleSubset)] 
    3535        self.outputs = [("Selected Examples", ExampleTable), ("Selected Graph", orange.Graph)] 
    3636         
     
    102102        self.tooltipBox = OWGUI.widgetBox(self.displayTab, "Tooltips", addSpace = False)   
    103103        self.tooltipListBox = OWGUI.listBox(self.tooltipBox, self, "tooltipAttributes", "attributes", selectionMode=QListWidget.MultiSelection, callback=self.clickedTooltipLstBox) 
     104         
     105        self.showWeights = 0 
     106        OWGUI.checkBox(self.displayTab, self, 'showWeights', 'Show weights', callback = self.showWeightLabels) 
    104107         
    105108        self.labelsOnMarkedOnly = 0 
     
    187190        self.infoTab.layout().addStretch(1) 
    188191        self.protoTab.layout().addStretch(1) 
     192        self.optMethod = 1 
     193        self.setOptMethod() 
    189194         
    190195        self.resize(1000, 600) 
     
    213218        if len(self.graph.getSelectedVertices()) == 1: 
    214219            if self.graph.insideview == 1: 
    215                 print "i: 1" 
     220                print "insideview: 1" 
    216221                self.graph.insideview = 0 
    217222                self.graph.showAllVertices() 
    218223                self.updateCanvas() 
    219224            else: 
    220                 print "i: 0" 
     225                print "insideview: 0" 
    221226                self.graph.insideview = 1 
    222227                self.graph.insideviewNeighbors = self.insideViewNeighbours 
     
    226231        else: 
    227232            print "One node must be selected!" 
     233     
     234    def showWeightLabels(self): 
     235        self.graph.showWeights = self.showWeights 
     236        self.graph.updateData() 
     237        self.graph.replot() 
    228238             
    229239    def labelsOnMarked(self): 
  • orange/OrangeWidgets/Prototypes/OWNetworkCanvas.py

    r3841 r3847  
    1010 
    1111import copy 
    12  
    1312from OWGraph import * 
    1413from numpy import * 
     
    1716 
    1817class NetworkVertex(): 
    19   def __init__(self): 
    20     self.index = -1 
    21     self.marked = False 
    22     self.show = True 
    23     self.selected = False 
    24     self.lebel = [] 
    25     self.tooltip = [] 
    26      
    27     self.pen = QPen(Qt.blue, 1) 
    28     self.nocolor = Qt.white 
    29     self.color = Qt.blue 
    30     self.size = 5 
     18    def __init__(self): 
     19        self.index = -1 
     20        self.marked = False 
     21        self.show = True 
     22        self.selected = False 
     23        self.label = [] 
     24        self.tooltip = [] 
     25         
     26        self.pen = QPen(Qt.blue, 1) 
     27        self.nocolor = Qt.white 
     28        self.color = Qt.blue 
     29        self.size = 5 
    3130     
    3231class NetworkEdge(): 
    33   def __init__(self): 
    34     self.u = None 
    35     self.v = None 
    36     self.arrowu = 0 
    37     self.arrowv = 0 
    38      
    39     self.pen = QPen(Qt.lightGray, 1) 
     32    def __init__(self): 
     33        self.u = None 
     34        self.v = None 
     35        self.arrowu = 0 
     36        self.arrowv = 0 
     37        self.weight = 0 
     38        self.label = [] 
     39         
     40        self.pen = QPen(Qt.lightGray, 1) 
    4041 
    4142class NetworkCurve(QwtPlotCurve): 
     
    4748      self.edges = [] 
    4849      self.setItemAttribute(QwtPlotItem.Legend, 0) 
    49        
     50 
    5051  def moveSelectedVertices(self, dx, dy): 
    5152    for vertex in self.vertices: 
     
    114115         
    115116        painter.drawLine(px1, py1, px2, py2) 
     117         
     118        d = 12 
     119        #painter.setPen(QPen(Qt.lightGray, 1)) 
     120        painter.setBrush(Qt.lightGray) 
     121        if edge.arrowu: 
     122            x = self.coors[0][edge.u.index] - self.coors[0][edge.v.index] 
     123            y = self.coors[1][edge.u.index] - self.coors[1][edge.v.index] 
     124             
     125            fi = math.atan2(y,x) * 180 / math.pi * 16 
     126            if not fi is None: 
     127                painter.drawPie(px1 - d, py1 - d, 2 * d, 2 * d, fi - 160, 320) 
     128                 
     129        if edge.arrowv: 
     130            x = self.coors[0][edge.v.index] - self.coors[0][edge.u.index] 
     131            y = self.coors[1][edge.v.index] - self.coors[1][edge.u.index] 
     132             
     133            fi = math.atan2(y,x) * 180 / math.pi * 16 
     134            if not fi is None: 
     135                painter.drawPie(px1 - d, py1 - d, 2 * d, 2 * d, fi - 160, 320) 
    116136     
    117137    for vertex in self.vertices: 
     
    174194      self.enableGridXB(False) 
    175195      self.enableGridYL(False) 
    176      
     196       
     197      self.showWeights = 0 
     198      self.minEdgeWeight = sys.maxint 
     199      self.maxEdgeWeight = 0 
     200      self.maxEdgeSize = 1 
     201       
    177202      self.networkCurve = NetworkCurve(self) 
    178203       
     
    560585          self.addCurve("radius", Qt.white, Qt.green, 1, style = QwtPlotCurve.Lines, xData = x, yData = y, showFilledSymbols = False) 
    561586       
     587      self.networkCurve.setRenderHint(QwtPlotItem.RenderAntialiased) 
    562588      self.networkCurve.attach(self) 
    563589      self.drawLabels() 
    564590      self.drawToolTips() 
     591      self.drawWeights() 
    565592      self.zoomExtent() 
    566593  
     
    606633                  mkey = self.addMarker(lbl, float(x1), float(y1), alignment = Qt.AlignBottom) 
    607634                  self.markerKeys[vertex.index] = mkey      
     635                   
     636  def drawWeights(self): 
     637      if self.showWeights: 
     638          print 'show w' 
     639          for edge in self.edges: 
     640              if not (edge.u.show and edge.v.show): 
     641                  continue 
     642               
     643              if self.labelsOnMarkedOnly and not (edge.u.marked and edge.v.marked): 
     644                  continue 
     645                                 
     646              x1 = (self.visualizer.coors[0][edge.u.index] + self.visualizer.coors[0][edge.v.index]) / 2 
     647              y1 = (self.visualizer.coors[1][edge.u.index] + self.visualizer.coors[1][edge.v.index]) / 2 
     648              lbl = "%.2f" % edge.weight 
     649               
     650              mkey = self.addMarker(lbl, float(x1), float(y1), alignment = Qt.AlignCenter) 
     651              self.markerKeys[(edge.u,edge.v)] = mkey      
    608652           
    609653  def setVertexColor(self, attribute): 
     
    689733      self.edges_old = {} 
    690734      self.nEdges = 0 
    691        
     735      self.networkCurve = NetworkCurve(self) 
    692736      self.edges = [] 
     737       
    693738      for (i, j) in visualizer.graph.getEdges(): 
    694739          self.edges_old[self.nEdges] = (None, i, j) 
     
    696741          edge.u = self.vertices[i] 
    697742          edge.v = self.vertices[j] 
     743 
     744          edge.weight = visualizer.graph[i, j][0] 
     745           
    698746          self.edges.append(edge) 
    699747          self.nEdges += 1 
    700748           
    701       self.networkCurve = NetworkCurve(self) 
     749          if self.minEdgeWeight > edge.weight: 
     750              self.minEdgeWeight = edge.weight 
     751               
     752          elif self.maxEdgeWeight < edge.weight: 
     753              self.maxEdgeWeight = edge.weight 
     754             
     755          if visualizer.graph.directed: 
     756              edge.arrowu = 0 
     757              edge.arrowv = 1 
     758                         
     759      if self.maxEdgeWeight < 10: 
     760          self.maxEdgeSize = self.maxEdgeWeight 
     761      else: 
     762          self.maxEdgeSize = 10 
     763           
     764      self.setEdgesSize() 
     765                         
    702766      self.networkCurve.coors = visualizer.coors 
    703767      self.networkCurve.vertices = self.vertices 
     
    705769      self.networkCurve.changed() 
    706770       
     771  def setEdgesSize(self): 
     772      if self.maxEdgeWeight > self.minEdgeWeight: 
     773          k = (self.maxEdgeSize - 1) / (self.maxEdgeWeight - self.minEdgeWeight) 
     774          for edge in self.edges: 
     775              size = (edge.weight - self.minEdgeWeight) * k + 1 
     776              edge.pen = QPen(Qt.lightGray, size) 
     777      else: 
     778          for edge in self.edges: 
     779              edge.pen = QPen(Qt.lightGray, 1) 
     780           
     781     
    707782  def updateCanvas(self): 
    708783      self.setAxisAutoScaled() 
Note: See TracChangeset for help on using the changeset viewer.