module documentation

未记录

函数 _construct_graph_from_dataframe 从一个或两个数据框中生成图。
函数 _construct_graph_from_dict_dict 从字典的字典表示中构建图。
函数 _construct_graph_from_dict_list 从字典列表表示中构建图。
函数 _construct_graph_from_list_dict 从列表字典表示中构建图。
函数 _construct_graph_from_tuple_list 从元组列表表示中构建图。
函数 _export_edge_dataframe 将带有属性的边导出到pandas.DataFrame
函数 _export_graph_to_dict_dict 将图导出为边属性的字典的字典
函数 _export_graph_to_dict_list 将图导出为两个字典列表,分别用于顶点和边。
函数 _export_graph_to_list_dict 将图导出为列表(或其他序列)的字典。
函数 _export_graph_to_tuple_list 将图导出为边元组列表
函数 _export_vertex_dataframe 将带有属性的顶点导出到pandas.DataFrame
def _construct_graph_from_dataframe(cls, edges, directed: bool = True, vertices=None, use_vids: bool = True): (source)

从一个或两个数据框生成图表。

参数
cls未记录
edges包含边和元数据的pandas DataFrame。此DataFrame的前两列包含每条边的源顶点和目标顶点。这些顶点ID表示为非负整数,而不是顶点名称,除非use_vids为False。其他列可能包含边属性。
directed:bool图是否为有向图
vertices无(默认)或包含顶点元数据的pandas DataFrame。DataFrame的索引必须包含顶点ID,作为从0到len(vertices) - 1的整数序列。如果use_vidsFalse,则第一列必须包含唯一的顶点名称。顶点名称应为字符串以确保完全兼容性,但如果您使用任何可哈希对象设置名称,许多函数仍将正常工作。所有其他列将按列名添加为顶点属性。
use_vids:bool是否将edges参数的前两列解释为顶点ID(基于0的整数)而不是顶点名称。如果此参数设置为True且edges的前两列不是整数,则会抛出错误。
返回

图表

edgesvertices参数中设置为NaN(非数字)的顶点名称将被设置为字符串"NA"。这可能会导致意外行为:在调用此函数之前,请用值填充您的NaN以避免这种情况。

def _construct_graph_from_dict_dict(cls, edges, directed: bool = False, vertex_name_attr: str = 'name'): (source)

从字典的字典表示中构建一个图。

每个键可以是一个整数或字符串,代表一个顶点。每个值是一个字典,代表从该顶点出发的边(如果图是有向的)。每个字典键是一个目标顶点的整数/字符串,这样将在两个顶点之间创建一条边。整数被解释为从0开始的顶点ID(如igraph中所用),字符串被解释为顶点名称,在这种情况下,顶点被赋予单独的数字ID。每个值是该边的边属性字典。

示例:

>>> {'Alice': {'Bob': {'weight': 1.5}, 'David': {'weight': 2}}}

创建一个包含三个顶点(Alice、Bob 和 David)和两条边的图:

  • Alice - Bob (with weight 1.5)
  • Alice - David (with weight 2)
参数
cls未记录
edges指定边及其属性的字典的字典
directed:bool是否创建有向图
vertex_name_attr:str将存储名称的顶点属性
返回
一个图形对象
def _construct_graph_from_dict_list(cls, vertices, edges, directed: bool = False, vertex_name_attr: str = 'name', edge_foreign_keys=('source', 'target'), iterative: bool = False): (source)

从字典列表表示中构建图。

当你有两个字典列表时,一个用于顶点,一个用于边,每个列表包含它们的属性(例如名称、权重),这个函数非常有用。当然,边的字典还必须包含两个特殊的键,用于指示该边连接的源顶点和目标顶点。只要它们生成字典或类似字典的对象(它们应该具有'items'和'__getitem__'方法),非列表可迭代对象也应该可以工作。例如,只要数据库查询结果是可迭代的,并且每次迭代都生成类似字典的对象,它很可能适合使用。

参数
cls未记录
vertices顶点的字典列表,如果没有为顶点分配特殊属性并且我们应该简单地使用边的字典列表来推断顶点名称,则为 None
edges边的字典列表。每个字典必须至少包含由edge_foreign_keys指定的两个键来标记源顶点和目标顶点,而其他项将被视为边属性。
directed:bool构建的图是否是有向的
vertex_name_attr:str顶点数据源中包含顶点名称的字典中的区分键的名称。如果verticesNone,则忽略。
edge_foreign_keys指定每个边字典中包含源(第一个)和目标(第二个)顶点名称的属性的元组。每个字典的这些项也会作为edge_attributes添加。
iterative:bool是否要逐个迭代地将边添加到图中,或者先构建一个大的边列表并使用它来构造图。后一种方法更快,但如果您的数据集很大,可能不适合。默认是从边列表中批量添加边。
返回

构建的图

示例:

>>> vertices = [{'name': 'apple'}, {'name': 'pear'}, {'name': 'peach'}]
>>> edges = [{'source': 'apple', 'target': 'pear', 'weight': 1.2},
...          {'source': 'apple', 'target': 'peach', 'weight': 0.9}]
>>> g = Graph.DictList(vertices, edges)

该图有三个带有名称的顶点和两个带有权重的边。

def _construct_graph_from_list_dict(cls, edges, directed: bool = False, vertex_name_attr: str = 'name'): (source)

从列表字典表示中构建图。

此函数用于从列表字典中构建图。其他非列表序列(例如元组)和惰性迭代器也被接受。对于每个键x,其对应的值必须是多个值y的序列:图中将创建边(x,y)。x和y必须是以下之一:

  • two integers: the vertices with those ids will be connected
  • two strings: the vertices with those names will be connected

如果使用名称,顶点的顺序不能保证,并且每个顶点将被赋予vertex_name_attr属性。

参数
cls未记录
edges描述边的序列字典
directed:bool是否创建有向图
vertex_name_attr:str将存储名称的顶点属性
返回

一个Graph对象

示例:

>>> mydict = {'apple': ['pear', 'peach'], 'pear': ['peach']}
>>> g = Graph.ListDict(mydict)

# 该图有三个顶点和三条边,每条边连接一对顶点。

def _construct_graph_from_tuple_list(cls, edges, directed: bool = False, vertex_name_attr: str = 'name', edge_attrs=None, weights=False): (source)

从元组列表表示中构建图。

这种表示法假设图的边被编码在一个元组(或列表)的列表中。列表中的每个项目必须至少有两个元素,这两个元素指定了边的源顶点和目标顶点。其余的元素(如果有的话)指定了该边的边属性,其中边属性的名称来源于edge_attrs列表。顶点的名称将存储在由vertex_name_attr给出的顶点属性中。

此函数的默认参数适用于从列表中创建无权图,其中每个项目包含源顶点和目标顶点。如果您有一个加权图,您可以通过将edge_attrs设置为"weight"["weight"]来使用第三个项目包含边权重的项目。如果您有更多的边属性,请将它们添加到edges列表中每个项目的末尾,并在edge_attrs中以列表形式指定相应的边属性名称。

参数
cls未记录
edges边的数据源。这必须是一个列表,其中每个项目是一个包含至少两个项目的元组(或列表):源顶点和目标顶点的名称。请注意,名称将被分配给name顶点属性(或如果指定了vertex_name_attr,则为另一个顶点属性),即使列表中的所有顶点名称实际上都是数字。
directed:bool构建的图是否是有向的
vertex_name_attr:str将包含顶点名称的顶点属性的名称。
edge_attrs边列表中额外项填充的边属性名称(从索引2开始,因为前两项是源顶点和目标顶点)。如果为None或空序列,则仅提取源顶点和目标顶点,并忽略额外的元组项。如果是字符串,则解释为单个边属性。
weights指定图是加权的另一种方式。如果你将weights设置为true并且没有给出edge_attrs,则会假定edge_attrs["weight"],并且igraph会将每个项目的第三个元素解析为边的权重。如果你将weights设置为一个字符串,则会假定edge_attrs仅包含该字符串,并且igraph会将边的权重存储在该属性中。
返回
构建的图表
def _export_edge_dataframe(graph): (source)

将带有属性的边导出到pandas.DataFrame

如果你想使用源和目标顶点ID作为索引,你可以这样做:

>>> from string import ascii_letters
>>> graph = Graph.GRG(25, 0.4)
>>> graph.vs["name"] = ascii_letters[:graph.vcount()]
>>> df = graph.get_edge_dataframe()
>>> df.set_index(['source', 'target'], inplace=True)

索引将是一个pandas.MultiIndex。您可以使用drop=False选项来保留sourcetarget列。

如果你想在源列和目标列中使用顶点名称:

>>> df = graph.get_edge_dataframe()
>>> df_vert = graph.get_vertex_dataframe()
>>> df['source'].replace(df_vert['name'], inplace=True)
>>> df['target'].replace(df_vert['name'], inplace=True)
>>> df_vert.set_index('name', inplace=True)  # Optional
返回
一个表示边及其属性的pandas.DataFrame。索引使用边ID,从0到M - 1,其中M是边的数量。数据框的前两列表示每条边的源顶点和目标顶点的ID。这些列的名称为"source"和"target"。如果你的边具有相同名称的属性,它们将出现在数据框中,但不在前两列中。
def _export_graph_to_dict_dict(graph, use_vids: bool = True, edge_attrs: str | Sequence[str] = None, skip_none: bool = False, vertex_name_attr: str = 'name'): (source)

将图导出为边属性字典的字典

此函数是Graph.DictDict的反向操作。

示例:

>>> g = Graph.Full(3)
>>> g.es['name'] = ['first_edge', 'second', 'third']
>>> g.to_dict_dict()
{0: {1: {'name': 'first_edge'}, 2: {'name': 'second'}}, 1: {2: {'name': 'third'}}}
参数
graph未记录
use_vids:bool是否在输出数据结构中使用顶点的ID或它们的vertex_name_attr属性来标记顶点。如果use_vids=False但顶点缺少vertex_name_attr属性,则会引发AttributeError。
edge_attrs:str | Sequence[str]要导出的边属性列表。None(默认)表示所有属性(与Graph.to_tuple_list不同)。字符串可以表示单个属性,并在内部包装为列表。
skip_none:bool是否跳过每条边中值为None的属性。如果只有部分边预计拥有某个属性,这将非常有用。
vertex_name_attr:str仅在use_vids=False时使用,用于选择在输出数据结构中使用哪个顶点属性来命名顶点。
返回
字典的字典的字典,外层键为顶点ID/名称,中间键为其邻居的ID/名称,最内层的字典表示该边的属性。
def _export_graph_to_dict_list(graph, use_vids: bool = True, skip_none: bool = False, vertex_name_attr: str = 'name'): (source)

将图导出为两个字典列表,分别用于顶点和边。

此函数是Graph.DictList的反向操作。

示例:

>>> g = Graph([(0, 1), (1, 2)])
>>> g.vs["name"] = ["apple", "pear", "peach"]
>>> g.es["name"] = ["first_edge", "second"]
>>> g.to_dict_list()
([{"name": "apple"}, {"name": "pear"}, {"name": "peach"}],
 [{"source": 0, "target": 1, "name": "first_edge"},
  {"source" 0, "target": 2, name": "second"}])
>>> g.to_dict_list(use_vids=False)
([{"name": "apple"}, {"name": "pear"}, {"name": "peach"}],
 [{"source": "apple", "target": "pear", "name": "first_edge"},
  {"source" "apple", "target": "peach", name": "second"}])
参数
graph未记录
use_vids:bool是否在输出数据结构中使用顶点的ID或它们的vertex_name_attr属性来标记顶点。如果use_vids=False但顶点缺少vertex_name_attr属性,则会引发AttributeError。
skip_none:bool是否跳过每条边中值为None的属性。如果只有部分边预计拥有某个属性,这将非常有用。
vertex_name_attr:str仅在use_vids=False时使用,用于选择在输出数据结构中使用哪个顶点属性来命名顶点。
返回
一个包含两个字典列表的元组,分别表示顶点和边及其属性。
def _export_graph_to_list_dict(graph, use_vids: bool = True, sequence_constructor: callable = list, vertex_name_attr: str = 'name'): (source)

将图导出为列表(或其他序列)的字典。

此函数是Graph.ListDict的反向操作。

示例:

>>> g = Graph.Full(3)
>>> g.to_sequence_dict() -> {0: [1, 2], 1: [2]}
>>> g.to_sequence_dict(sequence_constructor=tuple) -> {0: (1, 2), 1: (2,)}
>>> g.vs['name'] = ['apple', 'pear', 'peach']
>>> g.to_sequence_dict(use_vids=False)
{'apple': ['pear', 'peach'], 'pear': ['peach']}
参数
graph未记录
use_vids:bool是否在输出数据结构中使用顶点的ID或它们的vertex_name_attr属性来标记顶点。如果use_vids=False但顶点缺少vertex_name_attr属性,则会引发AttributeError。
sequence_constructor:callable用于作为字典值的数据结构的构造函数。默认值(list)会创建一个列表字典,每个列表表示相应字典键中指定的顶点的邻居。
vertex_name_attr:str仅在use_vids=False时使用,用于选择在输出数据结构中使用哪个顶点属性来命名顶点。
返回
序列的字典,由顶点键控,每个值包含该顶点的邻居。
def _export_graph_to_tuple_list(graph, use_vids: bool = True, edge_attrs: str | Sequence[str] = None, vertex_name_attr: str = 'name'): (source)

将图导出为边元组列表

此函数是Graph.TupleList的反向操作。

示例:

>>> g = Graph.Full(3)
>>> g.vs["name"] = ["apple", "pear", "peach"]
>>> g.es["name"] = ["first_edge", "second", "third"]
>>> # Get name of the edge
>>> g.to_tuple_list(edge_attrs=["name"])
[(0, 1, "first_edge"), (0, 2, "second"), (1, 2, "third")]
>>> # Use vertex names, no edge attributes
>>> g.to_tuple_list(use_vids=False)
[("apple", "pear"), ("apple", "peach"), ("pear", "peach")]
参数
graph未记录
use_vids:bool是否在输出数据结构中使用顶点的ID或它们的vertex_name_attr属性来标记顶点。如果use_vids=False但顶点缺少vertex_name_attr属性,则会引发AttributeError。
edge_attrs:str | Sequence[str]除了源和目标顶点之外,要导出的边属性列表,这些始终是每个元组的前两个元素。None(默认)等同于空列表。字符串可以表示单个属性,并将在内部包装在列表中。
vertex_name_attr:str仅在use_vids=False时使用,用于选择在输出数据结构中使用哪个顶点属性来命名顶点。
返回
一个元组列表,每个元组代表图的一条边。
def _export_vertex_dataframe(graph): (source)

将带有属性的顶点导出到pandas.DataFrame

如果你想使用顶点名称作为索引,你可以这样做:

>>> from string import ascii_letters
>>> graph = Graph.GRG(25, 0.4)
>>> graph.vs["name"] = ascii_letters[:graph.vcount()]
>>> df = graph.get_vertex_dataframe()
>>> df.set_index('name', inplace=True)
返回
一个表示顶点及其属性的pandas.DataFrame。索引使用顶点ID,从0到N-1,其中N是顶点的数量。