diff options
Diffstat (limited to 'networkx/drawing/tests/test_layout.py')
| -rw-r--r-- | networkx/drawing/tests/test_layout.py | 115 |
1 files changed, 108 insertions, 7 deletions
diff --git a/networkx/drawing/tests/test_layout.py b/networkx/drawing/tests/test_layout.py index bcd6d236..8366d252 100644 --- a/networkx/drawing/tests/test_layout.py +++ b/networkx/drawing/tests/test_layout.py @@ -32,14 +32,115 @@ class TestLayout(object): vpos=nx.shell_layout(G) 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) + 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) + + 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)) + + 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)) + + def check_scale_and_center(self, pos, scale, center): + center = numpy.array(center) + low = center - 0.5 * scale + hi = center + 0.5 * scale + vpos = numpy.array(list(pos.values())) + length = vpos.max(0) - vpos.min(0) + assert (length <= scale).all() + assert (vpos >= low).all() + assert (vpos <= hi).all() + + def test_scale_and_center_arg(self): + G = nx.complete_graph(9) + G.add_node(9) + vpos = nx.random_layout(G, scale=2, center=(4,5)) + self.check_scale_and_center(vpos, scale=2, center=(4,5)) + vpos = nx.spring_layout(G, scale=2, center=(4,5)) + self.check_scale_and_center(vpos, scale=2, center=(4,5)) + vpos = nx.spectral_layout(G, scale=2, center=(4,5)) + self.check_scale_and_center(vpos, scale=2, center=(4,5)) + # circular can have twice as big length + vpos = nx.circular_layout(G, scale=2, center=(4,5)) + self.check_scale_and_center(vpos, scale=2*2, center=(4,5)) + vpos = nx.shell_layout(G, scale=2, center=(4,5)) + self.check_scale_and_center(vpos, scale=2*2, center=(4,5)) + + # check default center and scale + vpos = nx.random_layout(G) + self.check_scale_and_center(vpos, scale=1, center=(0.5,0.5)) + vpos = nx.spring_layout(G) + self.check_scale_and_center(vpos, scale=1, center=(0.5,0.5)) + vpos = nx.spectral_layout(G) + self.check_scale_and_center(vpos, scale=1, center=(0.5,0.5)) + vpos = nx.circular_layout(G) + self.check_scale_and_center(vpos, scale=2, center=(0,0)) + vpos = nx.shell_layout(G) + self.check_scale_and_center(vpos, scale=2, center=(0,0)) + + def test_shell_layout(self): + G = nx.complete_graph(9) + shells=[[0], [1,2,3,5], [4,6,7,8]] + vpos = nx.shell_layout(G, nlist=shells) + vpos = nx.shell_layout(G, nlist=shells, scale=2, center=(3,4)) + shells=[[0,1,2,3,5], [4,6,7,8]] + vpos = nx.shell_layout(G, nlist=shells) + vpos = nx.shell_layout(G, nlist=shells, scale=2, center=(3,4)) + + def test_spring_args(self): + G = nx.complete_graph(9) + vpos = nx.spring_layout(G, dim=3) + assert_equal(vpos[0].shape, (3,)) + vpos = nx.spring_layout(G, fixed=[0,1], pos={1:(0,0), 2:(1,1)}) + vpos = nx.spring_layout(G, k=2, fixed=[0,1], pos={1:(0,0), 2:(1,1)}) + vpos = nx.spring_layout(G, scale=3, center=(2,5)) + vpos = nx.spring_layout(G, scale=3) + vpos = nx.spring_layout(G, center=(2,5)) + def test_spectral_for_small_graphs(self): + G = nx.Graph() + vpos = nx.spectral_layout(G) + vpos = nx.spectral_layout(G, center=(2,3)) + G.add_node(0) + vpos = nx.spectral_layout(G) + vpos = nx.spectral_layout(G, center=(2,3)) + G.add_node(1) + vpos = nx.spectral_layout(G) + vpos = nx.spectral_layout(G, center=(2,3)) + # 3 nodes should allow eigensolvers to work + G.add_node(2) + vpos = nx.spectral_layout(G) + vpos = nx.spectral_layout(G, center=(2,3)) def test_adjacency_interface_numpy(self): A=nx.to_numpy_matrix(self.Gs) |
