Python networkx.fruchterman_reingold_layout() Examples
The following are 23
code examples of networkx.fruchterman_reingold_layout().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
networkx
, or try the search function
.
Example #1
Source File: test_layout.py From Carnets with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_smoke_int(self): G = self.Gi vpos = nx.random_layout(G) vpos = nx.circular_layout(G) vpos = nx.planar_layout(G) vpos = nx.spring_layout(G) vpos = nx.fruchterman_reingold_layout(G) vpos = nx.fruchterman_reingold_layout(self.bigG) vpos = nx.spectral_layout(G) vpos = nx.spectral_layout(G.to_directed()) vpos = nx.spectral_layout(self.bigG) vpos = nx.spectral_layout(self.bigG.to_directed()) vpos = nx.shell_layout(G) if self.scipy is not None: vpos = nx.kamada_kawai_layout(G) vpos = nx.kamada_kawai_layout(G, dim=1)
Example #2
Source File: test_layout.py From Carnets with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_empty_graph(self): G = nx.empty_graph() vpos = nx.random_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.circular_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.planar_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.bipartite_layout(G, G) assert_equal(vpos, {}) vpos = nx.spring_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.fruchterman_reingold_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.spectral_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.shell_layout(G, center=(1, 1)) assert_equal(vpos, {})
Example #3
Source File: test_layout.py From Carnets with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_center_wrong_dimensions(self): G = nx.path_graph(1) assert_raises(ValueError, nx.random_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.circular_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.planar_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.spring_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.fruchterman_reingold_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.fruchterman_reingold_layout, G, dim=3, center=(1, 1)) assert_raises(ValueError, nx.spectral_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.spectral_layout, G, dim=3, center=(1, 1)) assert_raises(ValueError, nx.shell_layout, G, center=(1, 1, 1))
Example #4
Source File: test_layout.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def test_empty_graph(self): G = nx.empty_graph() vpos = nx.random_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.circular_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.spring_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.fruchterman_reingold_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.spectral_layout(G, center=(1, 1)) assert_equal(vpos, {}) vpos = nx.shell_layout(G, center=(1, 1)) assert_equal(vpos, {})
Example #5
Source File: test_layout.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def test_center_wrong_dimensions(self): G = nx.path_graph(1) assert_raises(ValueError, nx.random_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.circular_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.spring_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.fruchterman_reingold_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.fruchterman_reingold_layout, G, dim=3, center=(1, 1)) assert_raises(ValueError, nx.spectral_layout, G, center=(1, 1, 1)) assert_raises(ValueError, nx.spectral_layout, G, dim=3, center=(1, 1)) assert_raises(ValueError, nx.shell_layout, G, center=(1, 1, 1))
Example #6
Source File: test_layout.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def test_center_parameter(self): G = nx.path_graph(1) vpos = nx.random_layout(G, center=(1, 1)) vpos = nx.circular_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1)) vpos = nx.spring_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1)) vpos = nx.fruchterman_reingold_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1)) vpos = nx.spectral_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1)) vpos = nx.shell_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1))
Example #7
Source File: test_layout.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def test_smoke_initial_pos_fruchterman_reingold(self): pos = nx.circular_layout(self.Gi) npos = nx.fruchterman_reingold_layout(self.Gi, pos=pos)
Example #8
Source File: test_layout.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def test_smoke_string(self): G = self.Gs vpos = nx.random_layout(G) vpos = nx.circular_layout(G) vpos = nx.spring_layout(G) vpos = nx.fruchterman_reingold_layout(G) vpos = nx.spectral_layout(G) vpos = nx.shell_layout(G) if self.scipy is not None: vpos = nx.kamada_kawai_layout(G)
Example #9
Source File: test_layout.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def test_smoke_int(self): G = self.Gi vpos = nx.random_layout(G) vpos = nx.circular_layout(G) vpos = nx.spring_layout(G) vpos = nx.fruchterman_reingold_layout(G) vpos = nx.fruchterman_reingold_layout(self.bigG) vpos = nx.spectral_layout(G) vpos = nx.spectral_layout(G.to_directed()) vpos = nx.spectral_layout(self.bigG) vpos = nx.spectral_layout(self.bigG.to_directed()) vpos = nx.shell_layout(G) if self.scipy is not None: vpos = nx.kamada_kawai_layout(G)
Example #10
Source File: test_layout.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def test_smoke_empty_graph(self): G = [] vpos = nx.random_layout(G) vpos = nx.circular_layout(G) vpos = nx.spring_layout(G) vpos = nx.fruchterman_reingold_layout(G) vpos = nx.spectral_layout(G) vpos = nx.shell_layout(G) if self.scipy is not None: vpos = nx.kamada_kawai_layout(G)
Example #11
Source File: test_layout.py From aws-kube-codesuite with Apache License 2.0 | 5 votes |
def test_spring_init_pos(self): # Tests GH #2448 import math G = nx.Graph() G.add_edges_from([(0, 1), (1, 2), (2, 0), (2, 3)]) init_pos = {0: (0.0, 0.0)} fixed_pos = [0] pos = nx.fruchterman_reingold_layout(G, pos=init_pos, fixed=fixed_pos) has_nan = any(math.isnan(c) for coords in pos.values() for c in coords) assert_false(has_nan, 'values should not be nan')
Example #12
Source File: editor.py From GridCal with GNU General Public License v3.0 | 5 votes |
def auto_layout(self): """ Automatic layout of the nodes """ if self.circuit.graph is None: self.circuit.compile_snapshot() pos = nx.spectral_layout(self.circuit.graph, scale=2, weight='weight') pos = nx.fruchterman_reingold_layout(self.circuit.graph, dim=2, k=None, pos=pos, fixed=None, iterations=500, weight='weight', scale=20.0, center=None) # assign the positions to the graphical objects of the nodes for i, bus in enumerate(self.circuit.buses): try: x, y = pos[i] * 500 bus.graphic_obj.setPos(QPoint(x, y)) # apply changes to the API objects bus.x = x bus.y = y except KeyError as ex: warn('auto_layout: Node ' + str(i) + ' not in the graph!!!! \n' + str(ex)) self.center_nodes()
Example #13
Source File: test_layout.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 5 votes |
def test_smoke_int(self): G=self.Gi vpos=nx.random_layout(G) vpos=nx.circular_layout(G) vpos=nx.spring_layout(G) vpos=nx.fruchterman_reingold_layout(G) vpos=nx.spectral_layout(G) vpos=nx.spectral_layout(self.bigG) vpos=nx.shell_layout(G)
Example #14
Source File: test_layout.py From Carnets with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_center_parameter(self): G = nx.path_graph(1) vpos = nx.random_layout(G, center=(1, 1)) vpos = nx.circular_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1)) vpos = nx.planar_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1)) vpos = nx.spring_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1)) vpos = nx.fruchterman_reingold_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1)) vpos = nx.spectral_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1)) vpos = nx.shell_layout(G, center=(1, 1)) assert_equal(tuple(vpos[0]), (1, 1))
Example #15
Source File: test_layout.py From Carnets with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_smoke_initial_pos_fruchterman_reingold(self): pos = nx.circular_layout(self.Gi) npos = nx.fruchterman_reingold_layout(self.Gi, pos=pos)
Example #16
Source File: test_layout.py From Carnets with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_smoke_string(self): G = self.Gs vpos = nx.random_layout(G) vpos = nx.circular_layout(G) vpos = nx.planar_layout(G) vpos = nx.spring_layout(G) vpos = nx.fruchterman_reingold_layout(G) vpos = nx.spectral_layout(G) vpos = nx.shell_layout(G) if self.scipy is not None: vpos = nx.kamada_kawai_layout(G) vpos = nx.kamada_kawai_layout(G, dim=1)
Example #17
Source File: test_layout.py From Carnets with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_smoke_empty_graph(self): G = [] vpos = nx.random_layout(G) vpos = nx.circular_layout(G) vpos = nx.planar_layout(G) vpos = nx.spring_layout(G) vpos = nx.fruchterman_reingold_layout(G) vpos = nx.spectral_layout(G) vpos = nx.shell_layout(G) vpos = nx.bipartite_layout(G, G) if self.scipy is not None: vpos = nx.kamada_kawai_layout(G)
Example #18
Source File: test_layout.py From Carnets with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_spring_init_pos(self): # Tests GH #2448 import math G = nx.Graph() G.add_edges_from([(0, 1), (1, 2), (2, 0), (2, 3)]) init_pos = {0: (0.0, 0.0)} fixed_pos = [0] pos = nx.fruchterman_reingold_layout(G, pos=init_pos, fixed=fixed_pos) has_nan = any(math.isnan(c) for coords in pos.values() for c in coords) assert_false(has_nan, 'values should not be nan')
Example #19
Source File: test_layout.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 5 votes |
def test_single_node(self): G = nx.Graph() G.add_node(0) vpos = nx.random_layout(G) vpos = nx.circular_layout(G) vpos = nx.spring_layout(G) vpos = nx.fruchterman_reingold_layout(G) vpos = nx.shell_layout(G) vpos = nx.spectral_layout(G) # center arg vpos = nx.random_layout(G, scale=2, center=(4,5)) vpos = nx.circular_layout(G, scale=2, center=(4,5)) vpos = nx.spring_layout(G, scale=2, center=(4,5)) vpos = nx.shell_layout(G, scale=2, center=(4,5)) vpos = nx.spectral_layout(G, scale=2, center=(4,5))
Example #20
Source File: test_layout.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 5 votes |
def test_empty_graph(self): G=nx.Graph() vpos = nx.random_layout(G) vpos = nx.circular_layout(G) vpos = nx.spring_layout(G) vpos = nx.fruchterman_reingold_layout(G) vpos = nx.shell_layout(G) vpos = nx.spectral_layout(G) # center arg vpos = nx.random_layout(G, scale=2, center=(4,5)) vpos = nx.circular_layout(G, scale=2, center=(4,5)) vpos = nx.spring_layout(G, scale=2, center=(4,5)) vpos = nx.shell_layout(G, scale=2, center=(4,5)) vpos = nx.spectral_layout(G, scale=2, center=(4,5))
Example #21
Source File: test_layout.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 5 votes |
def test_smoke_string(self): G = self.Gs vpos = nx.random_layout(G) vpos = nx.circular_layout(G) vpos = nx.spring_layout(G) vpos = nx.fruchterman_reingold_layout(G) vpos = nx.spectral_layout(G) vpos = nx.shell_layout(G)
Example #22
Source File: layout.py From Carnets with BSD 3-Clause "New" or "Revised" License | 4 votes |
def _fruchterman_reingold(A, k=None, pos=None, fixed=None, iterations=50, threshold=1e-4, dim=2, seed=None): # Position nodes in adjacency matrix A using Fruchterman-Reingold # Entry point for NetworkX graph is fruchterman_reingold_layout() import numpy as np try: nnodes, _ = A.shape except AttributeError: msg = "fruchterman_reingold() takes an adjacency matrix as input" raise nx.NetworkXError(msg) if pos is None: # random initial positions pos = np.asarray(seed.rand(nnodes, dim), dtype=A.dtype) else: # make sure positions are of same type as matrix pos = pos.astype(A.dtype) # optimal distance between nodes if k is None: k = np.sqrt(1.0 / nnodes) # the initial "temperature" is about .1 of domain area (=1x1) # this is the largest step allowed in the dynamics. # We need to calculate this in case our fixed positions force our domain # to be much bigger than 1x1 t = max(max(pos.T[0]) - min(pos.T[0]), max(pos.T[1]) - min(pos.T[1])) * 0.1 # simple cooling scheme. # linearly step down by dt on each iteration so last iteration is size dt. dt = t / float(iterations + 1) delta = np.zeros((pos.shape[0], pos.shape[0], pos.shape[1]), dtype=A.dtype) # the inscrutable (but fast) version # this is still O(V^2) # could use multilevel methods to speed this up significantly for iteration in range(iterations): # matrix of difference between points delta = pos[:, np.newaxis, :] - pos[np.newaxis, :, :] # distance between points distance = np.linalg.norm(delta, axis=-1) # enforce minimum distance of 0.01 np.clip(distance, 0.01, None, out=distance) # displacement "force" displacement = np.einsum('ijk,ij->ik', delta, (k * k / distance**2 - A * distance / k)) # update positions length = np.linalg.norm(displacement, axis=-1) length = np.where(length < 0.01, 0.1, length) delta_pos = np.einsum('ij,i->ij', displacement, t / length) if fixed is not None: # don't change positions of fixed nodes delta_pos[fixed] = 0.0 pos += delta_pos # cool temperature t -= dt err = np.linalg.norm(delta_pos) / nnodes if err < threshold: break return pos
Example #23
Source File: layout.py From qgisSpaceSyntaxToolkit with GNU General Public License v3.0 | 4 votes |
def _fruchterman_reingold(A,dim=2,k=None,pos=None,fixed=None,iterations=50): # Position nodes in adjacency matrix A using Fruchterman-Reingold # Entry point for NetworkX graph is fruchterman_reingold_layout() import numpy as np try: nnodes,_=A.shape except AttributeError: raise nx.NetworkXError( "fruchterman_reingold() takes an adjacency matrix as input") A=np.asarray(A) # make sure we have an array instead of a matrix if pos is None: # random initial positions pos=np.asarray(np.random.random((nnodes,dim)),dtype=A.dtype) else: # make sure positions are of same type as matrix pos=pos.astype(A.dtype) # optimal distance between nodes if k is None: k=np.sqrt(1.0/nnodes) # the initial "temperature" is about .1 of domain area (=1x1) # this is the largest step allowed in the dynamics. # Calculate domain in case our fixed positions are bigger than 1x1 t = max(max(pos.T[0]) - min(pos.T[0]), max(pos.T[1]) - min(pos.T[1]))*0.1 # simple cooling scheme. # linearly step down by dt on each iteration so last iteration is size dt. dt=t/float(iterations+1) delta = np.zeros((pos.shape[0],pos.shape[0],pos.shape[1]),dtype=A.dtype) # the inscrutable (but fast) version # this is still O(V^2) # could use multilevel methods to speed this up significantly for iteration in range(iterations): # matrix of difference between points for i in range(pos.shape[1]): delta[:,:,i]= pos[:,i,None]-pos[:,i] # distance between points distance=np.sqrt((delta**2).sum(axis=-1)) # enforce minimum distance of 0.01 distance=np.where(distance<0.01,0.01,distance) # displacement "force" displacement=np.transpose(np.transpose(delta)*\ (k*k/distance**2-A*distance/k))\ .sum(axis=1) # update positions length=np.sqrt((displacement**2).sum(axis=1)) length=np.where(length<0.01,0.01,length) delta_pos=np.transpose(np.transpose(displacement)*t/length) if fixed is not None: # don't change positions of fixed nodes delta_pos[fixed]=0.0 pos+=delta_pos # cool temperature t-=dt if fixed is None: pos = _rescale_layout(pos) return pos