Utils

目录

工具#

子模块#

graphistry.layout.utils.dummyVertex 模块#

class graphistry.layout.utils.dummyVertex.DummyVertex(r=None)#

基础类:LayoutVertex

DummyVertex用于跨越多个层的边,它被插入到每个内部层中。

Attributes
  • 视图 (viewclass): 由于 DummyVertex 充当了 Vertex 的角色,它必须有一个视图。

  • ctrl (list[_sugiyama_attr]): 关联的虚拟顶点列表。

inner(direction)#

如果给定方向上的邻居是虚拟的,则为True。

neighbors(direction)#

反映顶点方法并返回给定方向上的相邻顶点列表(可能是虚拟的)。 :param direction: +1 表示下一层(子节点),-1 表示上一层(父节点)

Parameters:

方向 (整数)

graphistry.layout.utils.geometry 模块#

graphistry.layout.utils.geometry.angle_between_vectors(p1, p2)#
graphistry.layout.utils.geometry.lines_intersection(xy1, xy2, xy3, xy4)#

返回两条线的交点。

graphistry.layout.utils.geometry.new_point_at_distance(pt, distance, angle)#
graphistry.layout.utils.geometry.rectangle_point_intersection(rec, p)#

返回矩形(w,h)与从矩形对象中心到点‘p’的直线之间的交点。

graphistry.layout.utils.geometry.set_round_corner(e, pts)#
graphistry.layout.utils.geometry.setcurve(e, pts, tgs=None)#

返回通过点列表P的样条曲线。 样条曲线是一系列三次贝塞尔曲线(nurbs),这些曲线在它们的端点处具有匹配的切线。 这里考虑的方法取自“The NURBS book”(Les A. Piegl, Wayne Tiller, Springer, 1997),并实现了局部插值而非全局插值。

Args:

e: pts: tgs:

返回:

graphistry.layout.utils.geometry.size_median(recs)#
graphistry.layout.utils.geometry.tangents(P, n)#

graphistry.layout.utils.layer 模块#

class graphistry.layout.utils.layer.Layer(iterable=(), /)#

基础类:list

层是Sugiyama布局在分层列表中组织顶点的地方。顶点的放置由Sugiyama类完成,但它高度依赖于每层中顶点的排序以减少交叉。这种排序取决于在上层或下层中找到的邻居。

Attributes:

layout (SugiyamaLayout): 包含此层的Sugiyama布局实例的引用 upper (Layer): 对上层(层-1)的引用 lower (Layer): 对下层(层+1)的引用 crossings (int): 在此层中检测到的交叉次数

Methods:

设置(布局):从提供的布局中设置初始属性值 nextlayer():返回当前布局方向参数中的下一个层。 prevlayer():返回当前布局方向参数中的上一个层。 order():计算层内顶点的最优排序。

crossings = None#
layout = None#
lower = None#
neighbors(v)#

邻居指的是上下相邻的节点。 请注意,v.neighbors() 提供了图中v的邻居,而 此方法提供了在上下层中与v相邻的Vertex和DummyVertex (取决于layout.dirv状态)。

nextlayer()#
order()#
prevlayer()#
setup(layout)#
upper = None#

graphistry.layout.utils.layoutVertex 模块#

class graphistry.layout.utils.layoutVertex.LayoutVertex(layer=None, is_dummy=0)#

基础类:object

Sugiyama布局为顶点添加了新属性。 这些属性存储在一个内部的_sugimyama_vertex_attr对象中。

Attributes:

层数 (int): 层号 虚拟 (0/1): 顶点是否为虚拟 位置 (int): 顶点在层中的索引 x (list(float)): 顶点计算出的水平坐标列表 重心 (float): 顶点的当前重心

Parameters:

layer (int | None)

graphistry.layout.utils.poset 模块#

class graphistry.layout.utils.poset.Poset(collection=[])#

基础类:object

Poset 类实现了一个集合,但允许以确定性的方式对元素进行积分,并获取集合中的特定对象。 成员运算符默认比较对象的 __hash__,但 Poset 允许通过使用 contains__cmp__(obj) 来检查 __cmp__/__eq__ 成员资格。

add(obj)#
contains__cmp__(obj)#
copy()#
deepcopy()#
difference(*args)#
get(obj)#
index(obj)#
intersection(*args)#
issubset(other)#
issuperset(other)#
remove(obj)#
symmetric_difference(*args)#
union(other)#
update(other)#

graphistry.layout.utils.rectangle 模块#

class graphistry.layout.utils.rectangle.Rectangle(w=1, h=1)#

基础类:object

矩形区域。

graphistry.layout.utils.routing 模块#

class graphistry.layout.utils.routing.EdgeViewer#

基础类:object

setpath(pts)#
graphistry.layout.utils.routing.route_with_lines(e, pts)#

使用线条进行基本边缘路由。布局传递已经提供了边缘应通过的点列表。我们只需计算调整尾部和头部的位置。

graphistry.layout.utils.routing.route_with_rounded_corners(e, pts)#
graphistry.layout.utils.routing.route_with_splines(e, pts)#

增强的边缘路由,其中上述折线路由的“角落”用贝塞尔曲线圆滑处理。

模块内容#

graphistry.layout.graph.edge 模块#

class graphistry.layout.graph.edge.Edge(x, y, w=1, data=None, connect=False)#

基础类:EdgeBase

图的边。

Attributes
  • 数据(对象):一个可选的负载

  • w (int): 与边关联的可选权重(默认值为1),Dijkstra算法使用它来找到最小流路径。

  • feedback (bool): Tarjan算法是否反转了这条边以解除图中的循环。

Parameters:
  • w (int)

  • 数据 (对象)

attach()#

将此边附加到顶点的边集合中。

data: object#
detach()#

从顶点的边集合中移除这条边。

feedback: bool#
w: int#

graphistry.layout.graph.edgeBase 模块#

class graphistry.layout.graph.edgeBase.EdgeBase(x, y)#

基础类:object

边的基类。

Attributes
  • degree (int): 边的度数(唯一顶点的数量)。

  • v (list[Vertex]): 与此边相关联的顶点列表。

degree: int#

如果是循环则为0,否则为1。

graphistry.layout.graph.graph 模块#

class graphistry.layout.graph.graph.Graph(vertices=None, edges=None, directed=True)#

基础类:object

N(v, f_io=0)#
add_edge(e)#

将边e及其顶点添加到图中,可能会合并相关的graph_core组件

add_edges(edges)#
Parameters:

edges (列表)

add_vertex(v)#

将顶点 v 作为新组件添加到图中

component_class#

GraphBase 的别名

connected()#

返回组件列表

deg_avg()#

顶点的平均度数

deg_max()#

顶点的最大度数

deg_min()#

顶点的最小度数

edges()#
eps()#

图的epsilon值(范数/阶数),每个顶点的平均边数。

get_vertex_from_data(data)#
get_vertices_count()#
norm()#

图的范数(边的数量)

order()#

图的顺序(顶点数)

path(x, y, f_io=0, hook=None)#
remove_edge(e)#

移除边e,如果包含e的graph_core断开连接,可能会生成两个新的核心。

remove_vertex(x)#

移除顶点 v 及其所有边。

vertices()#

参见 graph_core

graphistry.layout.graph.graphBase 模块#

class graphistry.layout.graph.graphBase.GraphBase(vertices=None, edges=None, directed=True)#

基础类:object

一个由顶点/边对象组成的连通图。GraphBase 是图的一个组件,它包含一组连通的顶点和边。

Attributes:

verticesPoset (Poset[Vertex]): 图中顶点的偏序集。 edgesPoset (Poset[Edge]): 图中边的偏序集。 loops (set[Edge]): 边的集合(度数为0)。 directed (bool): 表示图是否被视为有向的。

N(v, f_io=0)#
add_edge(e)#

添加边e。至少其一个顶点必须属于图,另一个顶点将自动添加。

add_single_vertex(v)#

允许GraphBase持有单个顶点。

complement(G)#
constant_function(value)#
contract(e)#
deg_avg()#

顶点的平均度数

deg_max()#

顶点的最大度数

deg_min()#

顶点的最小度数

dft(start_vertex=None)#
dijkstra(x, f_io=0, hook=None)#

通过使用堆作为优先队列的Dijkstra算法,计算x与所有其他顶点之间的最短加权边路径。

edges(cond=None)#

生成一个边的迭代器,带有可选的过滤器

eps()#

图的epsilon值(范数/阶数),每个顶点的平均边数。

get_scs_with_feedback(roots=None)#

最小FAS算法(反馈弧集)创建一个DAG。通过使用Tarjan算法返回强连通组件(“scs”)的集合。这些是顶点的最大集合,使得从每个顶点到其他每个顶点都有路径。 该算法从提供的根顶点列表执行DFS。当然,一个循环是一个强连通组件,但一个强连通组件可以包含多个循环。 通过用“feedback”标志标记边来提供要移除/反转的反馈无环边集。 复杂度为O(V+E)。

Parameters:

Returns:

leaves()#

返回叶子(没有外向边的顶点)的列表。

matrix(cond=None)#

这个关联矩阵类似于邻接矩阵,但是是反对称的。返回图组件的关联矩阵

Parameters:

cond – 与vertices()中的条件函数相同。

Returns:

数组

norm()#

边缘偏序集的大小(边缘数量)。

order()#

图的顺序(顶点数)

partition()#
path(x, y, f_io=0, hook=None)#

通过广度优先下降找到顶点x和y之间的最短路径,如果提供了f_io方向,则受其约束。路径以顶点对象的列表形式返回。 如果提供了hook函数,则在将每个顶点添加到路径时调用它,并将顶点对象作为参数传递。

remove_edge(e)#

移除边 e,断言生成的图仍然是连通的。

remove_vertex(x)#

移除顶点x及其所有关联的边。

roots()#

返回根节点(没有入边的顶点)的列表。

spans(vertices)#
union_update(G)#
vertices(cond=None)#

生成一个遍历顶点的迭代器,带有可选的过滤器

graphistry.layout.graph.vertex 模块#

class graphistry.layout.graph.vertex.Vertex(data=None)#

基础类:VertexBase

Vertex类通过图相关特性增强了VertexBase。

Attributes

component (GraphBase): 包含此顶点的连接顶点的组件。默认情况下,顶点不属于任何组件,但当它被添加到图中时,c指向该图中的连接组件。 data (object): 与顶点关联的对象。

property index#

graphistry.layout.graph.vertexBase 模块#

class graphistry.layout.graph.vertexBase.VertexBase#

基础类:object

顶点的基类。

Attributes

e (list[Edge]): 与此顶点关联的边的列表。

degree()#

degree() : 顶点的度数(边的数量)。

detach()#

从其所有边中移除此顶点并返回此边的列表。

e_dir(dir)#

根据提供的方向参数(>0 表示向外),可以是 e_in、e_out 或所有边。

e_from(x)#

返回从顶点 v 指向该顶点的边。

e_in()#

e_in() : 指向该顶点的边的列表。

e_out()#

e_out(): 从该顶点指向外部的边的列表。

e_to(y)#

返回从该顶点指向顶点v的边。

e_with(v)#

返回包含此顶点和顶点v的边

neighbors(direction=0)#

返回此顶点的邻居。在所有方向(默认)或过滤的f_io方向(>0表示向外)的邻居顶点列表。

Parameters:

direction

  • 0: 父级和子级

  • -1: 父级

  • +1: 子级

Returns:

顶点列表

模块内容#