本文整理汇总了Python中sage.graphs.graph.Graph._circle_embedding方法的典型用法代码示例。如果您正苦于以下问题:Python Graph._circle_embedding方法的具体用法?Python Graph._circle_embedding怎么用?Python Graph._circle_embedding使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.graphs.graph.Graph
的用法示例。
在下文中一共展示了Graph._circle_embedding方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: CircularLadderGraph
# 需要导入模块: from sage.graphs.graph import Graph [as 别名]
# 或者: from sage.graphs.graph.Graph import _circle_embedding [as 别名]
def CircularLadderGraph(n):
r"""
Return a circular ladder graph with `2 * n` nodes.
A Circular ladder graph is a ladder graph that is connected at the ends,
i.e.: a ladder bent around so that top meets bottom. Thus it can be
described as two parallel cycle graphs connected at each corresponding node
pair.
PLOTTING: Upon construction, the position dictionary is filled to override
the spring-layout algorithm. By convention, the circular ladder graph is
displayed as an inner and outer cycle pair, with the first `n` nodes drawn
on the inner circle. The first (0) node is drawn at the top of the
inner-circle, moving clockwise after that. The outer circle is drawn with
the `(n+1)`th node at the top, then counterclockwise as well.
When `n == 2`, we rotate the outer circle by an angle of `\pi/8` to ensure
that all edges are visible (otherwise the 4 vertices of the graph would be
placed on a single line).
EXAMPLES:
Construct and show a circular ladder graph with 26 nodes::
sage: g = graphs.CircularLadderGraph(13)
sage: g.show() # long time
Create several circular ladder graphs in a Sage graphics array::
sage: g = []
sage: j = []
sage: for i in range(9):
....: k = graphs.CircularLadderGraph(i+3)
....: 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
"""
G = Graph(2 * n, name="Circular Ladder graph")
G._circle_embedding(list(range(n)), radius=1, angle=pi/2)
if n == 2:
G._circle_embedding(list(range(4)), radius=1, angle=pi/2 + pi/8)
else:
G._circle_embedding(list(range(n, 2*n)), radius=2, angle=pi/2)
G.add_cycle(list(range(n)))
G.add_cycle(list(range(n, 2 * n)))
G.add_edges( (i,i+n) for i in range(n) )
return G
示例2: CycleGraph
# 需要导入模块: from sage.graphs.graph import Graph [as 别名]
# 或者: from sage.graphs.graph.Graph import _circle_embedding [as 别名]
def CycleGraph(n):
r"""
Return a cycle graph with n nodes.
A cycle graph is a basic structure which is also typically called an
`n`-gon.
PLOTTING: Upon construction, the position dictionary is filled to override
the spring-layout algorithm. By convention, each cycle graph will be
displayed with the first (0) node at the top, with the rest following in a
counterclockwise manner.
The cycle graph is a good opportunity to compare efficiency of filling a
position dictionary vs. using the spring-layout algorithm for
plotting. Because the cycle graph is very symmetric, the resulting plots
should be similar (in cases of small `n`).
Filling the position dictionary in advance adds `O(n)` to the constructor.
EXAMPLES: Compare plotting using the predefined layout and networkx::
sage: import networkx
sage: n = networkx.cycle_graph(23)
sage: spring23 = Graph(n)
sage: posdict23 = graphs.CycleGraph(23)
sage: spring23.show() # long time
sage: posdict23.show() # long time
We next view many cycle graphs as a Sage graphics array. First we use the
``CycleGraph`` constructor, which fills in the position dictionary::
sage: g = []
sage: j = []
sage: for i in range(9):
....: k = graphs.CycleGraph(i+3)
....: 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
Compare to plotting with the spring-layout algorithm::
sage: g = []
sage: j = []
sage: for i in range(9):
....: spr = networkx.cycle_graph(i+3)
....: 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
TESTS:
The input parameter must be a positive integer::
sage: G = graphs.CycleGraph(-1)
Traceback (most recent call last):
...
ValueError: parameter n must be a positive integer
"""
if n < 0:
raise ValueError("parameter n must be a positive integer")
G = Graph(n, name="Cycle graph")
if n == 1:
G.set_pos({0:(0, 0)})
else:
G._circle_embedding(list(range(n)), angle=pi/2)
G.add_cycle(list(range(n)))
return G
示例3: StarGraph
# 需要导入模块: from sage.graphs.graph import Graph [as 别名]
# 或者: from sage.graphs.graph.Graph import _circle_embedding [as 别名]
def StarGraph(n):
r"""
Return a star graph with `n+1` nodes.
A Star graph is a basic structure where one node is connected to all other
nodes.
PLOTTING: Upon construction, the position dictionary is filled to override
the spring-layout algorithm. By convention, each star graph will be
displayed with the first (0) node in the center, the second node (1) at the
top, with the rest following in a counterclockwise manner. (0) is the node
connected to all other nodes.
The star graph is a good opportunity to compare efficiency of filling a
position dictionary vs. using the spring-layout algorithm for plotting. As
far as display, the spring-layout should push all other nodes away from the
(0) node, and thus look very similar to this constructor's positioning.
EXAMPLES::
sage: import networkx
Compare the plots::
sage: n = networkx.star_graph(23)
sage: spring23 = Graph(n)
sage: posdict23 = graphs.StarGraph(23)
sage: spring23.show() # long time
sage: posdict23.show() # long time
View many star graphs as 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.StarGraph(i+3)
....: 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
Compared to plotting with the spring-layout algorithm
::
sage: g = []
sage: j = []
sage: for i in range(9):
....: spr = networkx.star_graph(i+3)
....: 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
"""
G = Graph({0: list(range(1, n + 1))}, name="Star graph")
G.set_pos({0:(0, 0)})
G._circle_embedding(list(range(1, n + 1)), angle=pi/2)
return G