本文整理汇总了Python中sage.graphs.graph.Graph._line_embedding方法的典型用法代码示例。如果您正苦于以下问题:Python Graph._line_embedding方法的具体用法?Python Graph._line_embedding怎么用?Python Graph._line_embedding使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.graphs.graph.Graph
的用法示例。
在下文中一共展示了Graph._line_embedding方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CompleteBipartiteGraph
# 需要导入模块: from sage.graphs.graph import Graph [as 别名]
# 或者: from sage.graphs.graph.Graph import _line_embedding [as 别名]
#.........这里部分代码省略.........
spring-layout algorithm vs. the position dictionary used in this
constructor. The position dictionary flattens the graph and separates the
partitioned nodes, making it clear which nodes an edge is connected to. The
Complete Bipartite graph plotted with the spring-layout algorithm tends to
center the nodes in n1 (see spring_med in examples below), thus overlapping
its nodes and edges, making it typically hard to decipher.
Filling the position dictionary in advance adds `O(n)` to the constructor.
Feel free to race the constructors below in the examples section. The much
larger difference is the time added by the spring-layout algorithm when
plotting. (Also shown in the example below). The spring model is typically
described as `O(n^3)`, as appears to be the case in the NetworkX source
code.
EXAMPLES:
Two ways of constructing the complete bipartite graph, using different
layout algorithms::
sage: import networkx
sage: n = networkx.complete_bipartite_graph(389, 157); spring_big = Graph(n) # long time
sage: posdict_big = graphs.CompleteBipartiteGraph(389, 157) # long time
Compare the plotting::
sage: n = networkx.complete_bipartite_graph(11, 17)
sage: spring_med = Graph(n)
sage: posdict_med = graphs.CompleteBipartiteGraph(11, 17)
Notice here how the spring-layout tends to center the nodes of `n1`::
sage: spring_med.show() # long time
sage: posdict_med.show() # long time
View many complete bipartite graphs with a Sage Graphics Array, with this
constructor (i.e., the position dictionary filled)::
sage: g = []
sage: j = []
sage: for i in range(9):
....: k = graphs.CompleteBipartiteGraph(i+1,4)
....: g.append(k)
sage: for i in range(3):
....: n = []
....: for m in range(3):
....: n.append(g[3*i + m].plot(vertex_size=50, vertex_labels=False))
....: j.append(n)
sage: G = sage.plot.graphics.GraphicsArray(j)
sage: G.show() # long time
We compare to plotting with the spring-layout algorithm::
sage: g = []
sage: j = []
sage: for i in range(9):
....: spr = networkx.complete_bipartite_graph(i+1,4)
....: k = Graph(spr)
....: g.append(k)
sage: for i in range(3):
....: n = []
....: for m in range(3):
....: n.append(g[3*i + m].plot(vertex_size=50, vertex_labels=False))
....: j.append(n)
sage: G = sage.plot.graphics.GraphicsArray(j)
sage: G.show() # long time
:trac:`12155`::
sage: graphs.CompleteBipartiteGraph(5,6).complement()
complement(Complete bipartite graph of order 5+6): Graph on 11 vertices
TESTS:
Prevent negative dimensions (:trac:`18530`)::
sage: graphs.CompleteBipartiteGraph(-1,1)
Traceback (most recent call last):
...
ValueError: the arguments n1(=-1) and n2(=1) must be positive integers
sage: graphs.CompleteBipartiteGraph(1,-1)
Traceback (most recent call last):
...
ValueError: the arguments n1(=1) and n2(=-1) must be positive integers
"""
if n1<0 or n2<0:
raise ValueError('the arguments n1(={}) and n2(={}) must be positive integers'.format(n1,n2))
G = Graph(n1+n2, name="Complete bipartite graph of order {}+{}".format(n1, n2))
G.add_edges((i,j) for i in range(n1) for j in range(n1,n1+n2))
# We now assign positions to vertices:
# - vertices 0,..,n1-1 are placed on the line (0, 1) to (max(n1, n2), 1)
# - vertices n1,..,n1+n2-1 are placed on the line (0, 0) to (max(n1, n2), 0)
# If n1 (or n2) is 1, the vertex is centered in the line.
if set_position:
nmax = max(n1, n2)
G._line_embedding(list(range(n1)), first=(0, 1), last=(nmax, 1))
G._line_embedding(list(range(n1, n1+n2)), first=(0, 0), last=(nmax, 0))
return G