igraph#
igraph 是一个流行的图库,PyGraphistry 可以与之接口。这使您能够利用 igraph 的布局算法,以及可选的算法增强功能。它是基于 CPU 的,通常可以处理中小型图。
- graphistry.plugins.igraph.compute_igraph(self, alg, out_col=None, directed=None, use_vids=False, params={}, stringify_rich_types=True)#
使用igraph方法丰富或替换图形
- Parameters:
alg (str) – igraph.Graph方法的名称,例如pagerank
out_col (可选[str]) – 对于生成节点属性列的算法,out_col 是期望的输出列名。当为 None 时,使用算法的名称。(默认值为 None)
directed (可选[布尔值]) – 在转换为igraph时,是否是有向的。如果为None,则尝试有向和无向。(默认值为None)
use_vids (bool) – 在转换为igraph时,是否将ID解释为igraph顶点ID(非负整数)或任意值(False,默认值)
params (dict) – 传递给底层igraph方法的任何命名参数
stringify_rich_types (bool) – 当返回像igraph.Graph这样的丰富类型时,可能会对下游渲染造成问题,将它们强制转换为字符串
self (Plottable)
- Returns:
绘图仪
- Return type:
绘图仪
- Example: Pagerank
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['c','c','e','e']}) g = graphistry.edges(edges, 's', 'd').materialize_nodes() g2 = g.compute_igraph('pagerank') assert 'pagerank' in g2._nodes.columns
- Example: Pagerank with custom name
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['c','c','e','e']}) g = graphistry.edges(edges, 's', 'd').materialize_nodes() g2 = g.compute_igraph('pagerank', out_col='my_pr') assert 'my_pr' in g2._nodes.columns
- Example: Pagerank on an undirected
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['c','c','e','e']}) g = graphistry.edges(edges, 's', 'd').materialize_nodes() g2 = g.compute_igraph('pagerank', directed=False) assert 'pagerank' in g2._nodes.columns
- Example: Pagerank with custom parameters
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['c','c','e','e']}) g = graphistry.edges(edges, 's', 'd').materialize_nodes() g2 = g.compute_igraph('pagerank', params={'damping': 0.85}) assert 'pagerank' in g2._nodes.columns
- Example: Personalized Pagerank
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['c','c','e','e']}) g = graphistry.edges(edges, 's', 'd').materialize_nodes() g2 = g.compute_igraph('personalized_pagerank') assert 'personalized_pagerank' in g2._nodes.columns
- graphistry.plugins.igraph.from_igraph(self, ig, node_attributes=None, edge_attributes=None, load_nodes=True, load_edges=True, merge_if_existing=True)#
将igraph对象转换为Plotter
如果基础 g 有 _node、_source、_destination 定义,请使用它们
当 merge_if_existing 与预先存在的节点/边 df 和形状匹配 ig 时,合并属性
为了使merge_if_existing能够处理边,必须设置g._edge并在igraph.Graph中具有相应的边索引属性。
- Parameters:
ig (igraph) – 源 igraph 对象
node_attributes (可选[列表[字符串]]) – 要加载的节点属性子集;None 表示加载所有属性(默认)
edge_attributes (可选[列表[字符串]]) – 要加载的边属性子集;None 表示全部(默认)
load_nodes (bool) – 是否加载节点数据框(默认为 True)
load_edges (bool) – 是否加载边的数据框(默认为 True)
merge_if_existing (bool) – 是否与现有的节点/边数据框合并(默认为 True)
merge_if_existing – bool
- Returns:
绘图仪
- Return type:
- Example: Convert from igraph, including all node/edge properties
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a', 'b', 'c', 'd'], 'd': ['b', 'c', 'd', 'e'], 'v': [101, 102, 103, 104]}) g = graphistry.edges(edges, 's', 'd').materialize_nodes().get_degrees() assert 'degree' in g._nodes.columns g2 = g.from_igraph(g.to_igraph()) assert len(g2._nodes.columns) == len(g._nodes.columns)
- Example: Enrich from igraph, but only load in 1 node attribute
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a', 'b', 'c', 'd'], 'd': ['b', 'c', 'd', 'e'], 'v': [101, 102, 103, 104]}) g = graphistry.edges(edges, 's', 'd').materialize_nodes().get_degree() assert 'degree' in g._nodes ig = g.to_igraph(include_nodes=False) assert 'degree' not in ig.vs ig.vs['pagerank'] = ig.pagerank() g2 = g.from_igraph(ig, load_edges=False, node_attributes=[g._node, 'pagerank']) assert 'pagerank' in g2._nodes asssert 'degree' in g2._nodes
- graphistry.plugins.igraph.layout_igraph(self, layout, directed=None, use_vids=False, bind_position=True, x_out_col='x', y_out_col='y', play=0, params={})#
使用igraph算法计算图形布局。有关布局的列表,请参见layout_algs或igraph文档。
- Parameters:
布局 (str) – igraph.Graph.layout 方法的名称,例如 sugiyama
directed (可选[布尔值]) – 在转换为igraph时,是否是有向的。如果为None,则尝试有向和无向。(默认值为None)
use_vids (bool) – 是否使用igraph顶点id(非负整数)或任意节点id(False,默认值)
bind_position (bool) – 是否调用 bind(point_x=, point_y=)(默认为 True)
x_out_col (str) – 写入x位置的属性。(默认值为‘x’)
y_out_col (str) – 用于写入x位置的属性。(默认值为‘y’)
play (可选[str]) – 如果定义,设置 settings(url_params={‘play’: play})。(默认值为 0)
params (dict) – 传递给底层igraph方法的任何命名参数
self (Plottable)
- Returns:
绘图仪
- Return type:
绘图仪
- Example: Sugiyama layout
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['b','c','d','e']}) g = graphistry.edges(edges, 's', 'd') g2 = g.layout_igraph('sugiyama') assert 'x' in g2._nodes g2.plot()
- Example: Change which column names are generated
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['b','c','d','e']}) g = graphistry.edges(edges, 's', 'd') g2 = g.layout_igraph('sugiyama', x_out_col='my_x', y_out_col='my_y') assert 'my_x' in g2._nodes assert g2._point_x == 'my_x' g2.plot()
- Example: Pass parameters to layout methods - Sort nodes by degree
import graphistry, pandas as pd edges = pd.DataFrame({'s': ['a','b','c','d'], 'd': ['b','c','d','e']}) g = graphistry.edges(edges, 's', 'd') g2 = g.get_degrees() assert 'degree' in g._nodes.columns g3 = g.layout_igraph('sugiyama', params={'layers': 'degree'}) g3.plot()
- graphistry.plugins.igraph.to_igraph(self, directed=True, include_nodes=True, node_attributes=None, edge_attributes=None, use_vids=False)#
将当前项目转换为igraph图。请参阅from_igraph中的示例。
- Parameters:
directed (bool) – 是否创建有向图(默认为 True)
include_nodes (bool) – 是否摄取节点表,如果它存在(默认为 True)
node_attributes (可选[列表[字符串]]) – 要加载的节点属性,None 表示全部(默认 None)
edge_attributes (可选[列表[字符串]]) – 要加载的边属性,None 表示加载所有(默认 None)
use_vids (bool) – 是否将ID解释为igraph顶点ID,这些ID必须是非负整数(默认值为False)
self (Plottable)
常量
- graphistry.plugins.igraph.compute_algs: List[str] = ['articulation_points', 'authority_score', 'betweenness', 'bibcoupling', 'harmonic_centrality', 'closeness', 'clusters', 'cocitation', 'community_edge_betweenness', 'community_fastgreedy', 'community_infomap', 'community_label_propagation', 'community_leading_eigenvector', 'community_leiden', 'community_multilevel', 'community_optimal_modularity', 'community_spinglass', 'community_walktrap', 'constraint', 'coreness', 'gomory_hu_tree', 'harmonic_centrality', 'hub_score', 'eccentricity', 'eigenvector_centrality', 'k_core', 'pagerank', 'personalized_pagerank', 'spanning_tree']#
内置可变序列。
如果没有给出参数,构造函数将创建一个新的空列表。 如果指定了参数,则它必须是一个可迭代对象。
- graphistry.plugins.igraph.layout_algs: List[str] = ['auto', 'automatic', 'bipartite', 'circle', 'circular', 'dh', 'davidson_harel', 'drl', 'drl_3d', 'fr', 'fruchterman_reingold', 'fr_3d', 'fr3d', 'fruchterman_reingold_3d', 'grid', 'grid_3d', 'graphopt', 'kk', 'kamada_kawai', 'kk_3d', 'kk3d', 'kamada_kawai_3d', 'lgl', 'large', 'large_graph', 'mds', 'random', 'random_3d', 'rt', 'tree', 'reingold_tilford', 'rt_circular', 'reingold_tilford_circular', 'sphere', 'spherical', 'circle_3d', 'circular_3d', 'star', 'sugiyama']#
内置可变序列。
如果没有给出参数,构造函数将创建一个新的空列表。 如果指定了参数,则它必须是一个可迭代对象。