跳转到主要内容

使用sigma.js渲染交互式网络的Jupyter小部件。

项目描述

DOI

ipysigma

使用sigma.js和graphology创建的Jupyter小部件,可以在笔记本单元的结果中直接渲染交互式网络。

实时演示

ipysigma已设计为与networkxigraph一起工作。

ipysigma允许您自定义大量图形的可视变量,例如:节点颜色、大小、标签、边框、光环、图标、形状和边颜色、大小、类型、标签等。

有关您可以调整的所有可视变量的详尽列表,请参阅文档中的"可用的可视变量"部分。

ipysigma

ipysigma还能显示相同图形的同步交互式“小 multiples”,以便轻松比较其一些功能。

ipysigma-grid

摘要

安装

您可以使用pip进行安装

pip install ipysigma

您还需要安装networkxigraph之一。

如果您使用的是较旧的Jupyter版本,您可能还需要启用nbextension

jupyter nbextension enable --py --sys-prefix ipysigma

# You might need one of those other commands
jupyter nbextension enable --py --user ipysigma
jupyter nbextension enable --py --system ipysigma

如果您想在Google Colab上使用ipysigma,您需要使用以下代码启用小部件输出

from google.colab import output

output.enable_custom_widget_manager()

请记住,您可以在Colab中通过在单元格中执行以下命令来安装包

!pip install networkx ipysigma

快速入门

使用networkx

import networkx as nx
from ipysigma import Sigma

# Importing a gexf graph
g = nx.read_gexf('./my-graph.gexf')

# Displaying the graph with a size mapped on degree and
# a color mapped on a categorical attribute of the nodes
Sigma(g, node_size=g.degree, node_color='category')

使用igraph

import igraph as ig
from ipysigma import Sigma

# Generating a graph
g = ig.Graph.Famous('Zachary')

# Displaying the graph with a size mapped on degree and
# a color mapped on node betweenness centrality, using
# a continuous color scale named "Viridis"
Sigma(g, node_size=g.degree, node_color=g.betweenness(), node_color_gradient='Viridis')

示例

计算Louvain划分并将其用作节点颜色

ipysigma能够使用graphology在客户端计算度量。因此,您可以要求它计算例如Louvain划分,如果您不想或不能在Python端执行此操作。

有关可用度量及其指定方式的更多信息,请参阅文档的这部分

Sigma(g, node_metrics=["louvain"], node_color="louvain")

# Renaming the target attribute
Sigma(g, node_metrics={"community": "louvain"}, node_color="community")

# Passing custom parameters
Sigma(
  g,
  node_metrics={"community": {"name": "louvain", "resolution": 1.5}},
  node_color="community"
)

使用networkx/igraph/自定义度量作为视觉变量

使用networkx度量

import networkx as nx

g = nx.path_graph(5)
Sigma(g, node_size=nx.eigenvector_centrality(g))

使用igraph度量

import igraph as ig

g = ig.Graph.GRG(5, 0.5)
Sigma(g, node_size=g.pagerank(), node_color=g.connected_components())

使用自定义度量

import networkx as nx

def even_or_odd(node):
  return node % 2 == 0

g = nx.path_graph(5)
Sigma(g, node_color=even_or_odd)

阅读这部分以获取可用于视觉变量的完整列表。

将pandas DataFrame显示为图形

将表格数据转换为图表并不明显。因此,为此,我们建议使用我们在其他库python pelote中找到的帮助函数。

在这个第一个例子中,我们从一个边DataFrame创建一个图

import pandas as pd
from pelote import edges_table_to_graph

# Alice invited Bob and Chloe. Bob invited Chloe twice.
df = pd.DataFrame({
  "hosts": ["Alice", "Alice", "Bob", "Bob"],
  "guests": ["Bob", "Chloe", "Chloe", "Chloe"]
})

g = edges_table_to_graph(
  df,
  edge_source_col="hosts",
  edge_target_col="guests",
  count_rows_as_weight=True,
  directed=True
)

Sigma(g, edge_size='weight')

再次使用pelote,您也可以使用table_to_bipartite_graph函数创建一个二分网络(例如学生和他们的教授)

import pandas as pd
from pelote import table_to_bipartite_graph

df = pd.DataFrame({
  "professor": ["A", "A", "A", "B", "B", "B", "B"],
  "student": ["C", "D", "E", "C", "F", "G", "H"],
})

g = table_to_bipartite_graph(df, 'student', 'professor', node_part_attr='status')

Sigma(g, node_color='status', default_node_size=10, show_all_labels=True)

比较图形的两个特征

假设我们有一个网站图,我们根据类型和语言对其进行了分类,并且我们想比较这些类别在图拓扑中的分布。我们可以用节点颜色表示语言,用边框颜色表示类型,但您很快就会发现这可能是不可读的。

为了解决这类问题并使用户能够轻松比较图的多个特征,ipysigma暴露了一个SigmaGrid小部件,该小部件将同一图的多个同步视图排列在网格上

from ipysigma import SigmaGrid

# Views to display can be specified through the `views` kwarg, expecting
# a list of dicts of keyword arguments to give to the underlying Sigma widgets:
SigmaGrid(g, views=[
  {"node_color": "type"},
  {"node_color": "type"}
])

# You can do the same by using the `#.add` method of the grid to
# dynamically add views:
SigmaGrid(g).add(node_color="lang").add(node_color="type")

# Any kwarg passed to the grid directly will be used by all of the views.
# This is useful to avoid repetition:
SigmaGrid(g, node_size=g.degree, views=[
  {"node_color": "type"},
  {"node_color": "type"}
])

# You can of course display more than 2 views
# By default the grid has 2 columns and will wrap to new rows,
# but you can change the number of columns using the `columns` kwarg:
SigmaGrid(g, columns=3, views=[
  {"node_size": g.degree},
  {"node_size": g.in_degree},
  {"node_size": g.out_degree}
])

更多示例:功能测试笔记本

如果您想查看小部件视觉变量的综合示例,您可以阅读在这里找到的笔记本,这些笔记本作为库的功能测试。

哪些数据可以用作视觉变量

有几种方法可以指定要作为视觉变量使用的选项(阅读这部分以获取详细解释)。

以下是可能的完整列表

节点或边的属性名称

# Let's say your nodes have a "lang" attribute, we can use its modalities as values for
# a categorical color palette:
Sigma(g, node_color='lang')

节点或边映射

# You can store the data in a mapping, e.g. a dictionary, likewise:
node_lang = {'node1': 'en', 'node2': 'fr', ...}
Sigma(g, node_color=node_lang)

# For edges, the mapping's key must be a 2-tuple containing source & target nodes.
# Note that for undirected graphs, the order of nodes in the tuple
# does not make any difference as both will work.
edge_type = {('node1', 'node2'): 'LIKES', ('node2', 'node3'): 'LOVES'}

任意可迭代对象

# Any arbitrary iterable such as generators, ranges, numpy vectors,
# pandas series etc. will work. The only requirement is that they should
# follow the order of iteration of nodes or edges in the graph, so we may
# align the data properly.

# Creating a 0 to n generic label for my nodes
Sigma(g, node_label=range(len(g)))

# Random size for my edges
Sigma(g, edge_size=(random() for _ in g.edges))

# Numpy vector
Sigma(g, node_size=np.random.rand(len(g)))

# Pandas series
Sigma(g, edge_size=df.edge_weights)

分区

# A partition, complete or not, but not overlapping, of nodes or edges:
# Must be a list of lists or a list of sets.
communities = [{2, 3, 6}, {0, 1}, {4, 6}]

Sigma(g, node_color=communities)

networkx/igraph度视图

# Mapping node size on degree is as simple as:
Sigma(g, node_size=g.degree)

igraph VertexClustering

# IGraph community detection / clustering methods return a VertexClustering object
Sigma(g, node_color=g.connected_components())

Sigma(g, node_color=g.community_multilevel())

任意可调用对象

# Creating a label for my nodes
Sigma(g, node_label=lambda node: 'Label of ' + str(node))

# Using edge weight as size only for some source nodes
Sigma(g, edge_size=lambda u, v, a: attr['weight'] if g.nodes[u]['part'] == 'main' else 1)

# Node callables will be given the following arguments:
#   1. node key
#   2. node attributes

# Edge callables will be given the following arguments:
#  1. source node key
#  2. target node key
#  3. edge attributes

# Note that given callables may choose to take any number of those arguments.
# For instance, the first example only uses the first argument but still works.

集合

# A set will be understood as a binary partition with nodes or edges being
# in it or outside it. This will be mapped to a boolean value, with `True`
# meaning the node or edge was in the partition.

# This will display the nodes 1, 5 and 6 in a color, and all the other ones
# in a different color.
Sigma(g, node_color={1, 5, 6})

视觉变量和kwargs命名理由

ipysigma允许用户调整大量的视觉变量。它们都通过将一系列关键字参数传递给Sigma小部件来工作。

ipysigma中,可以提供以下视觉变量

  • 分类数据,这意味着它们将类别值映射到离散的可视化值,例如一个节点的类别与特定颜色相关联。
  • 连续数据,这意味着它们将数值映射到大小范围或颜色梯度,例如在屏幕上表示节点的度数时的大小。

kwargs命名理由

为了能够在屏幕上绘制,每个可视化变量必须使用对小部件可视化表示有意义的值。对于颜色,可能是HTML颜色名称,例如#fa65eacyan。对于大小,可能是像素数等。

如果您知道您在做什么,并希望直接将ipysigma期望的“原始”值提供给可视化表示,所有变量都有以raw_开头的kwargs,例如raw_node_color

但如果您希望ipysigma将您的任意值映射到合适的可视化表示,所有变量都有不带前缀的kwargs,例如node_color

在这种情况下,如果您使用分类数据,ipysigma可以生成或使用调色板将类别值映射到屏幕上的颜色,例如。您始终可以使用带有_palette_mapping后缀的kwargs自定义调色板或映射,例如node_color_palettenode_shape_mapping

如果您使用数值数据,则值将被映射到输出范围,通常以像素为单位,可以通过带有_range后缀的kwargs进行配置,例如node_size_range。同样,如果您想将数值数据映射到颜色梯度,您将找到带有_gradient后缀的kwargs,例如node_color_gradient

有时,一些值可能会超出表示的范围,例如连续变量的非数值值或给定调色板中不存在的颜色类别。在这种情况下,始终存在一个以default_开头的前缀kwargs,例如default_node_color。一个巧妙的方法是使用这些kwargs作为表示所有边具有相同颜色(例如)或节点具有相同像素大小(例如)的常数值的指示方式。

最后,通常可以调整数值值从原始域到可视化域的映射方式。例如,当您选择在图表上使用对数刻度以更好地可视化特定分布时,就是这样做的。类似地,相关的ipysigma可视化变量可以通过带有_scale后缀的kwargs访问,例如node_color_scale,让您轻松地从线性刻度切换到对数刻度或幂刻度等。(有关更多信息,请参阅下一部分文档中的此部分)。

总结一下,让我们以两个详尽的示例结束:节点颜色和节点大小。

分类或连续变量:以节点颜色为例

  • node_color:此kwargs期望与您的节点相关的某些任意值。这些值可以以多种方式提供,如下所示。默认情况下,node_color是分类变量。因此,给定值将被映射到适当的颜色,从为您自动生成的调色板中选择。如果您想将数据解释为连续的,您需要通过node_color_gradient向变量提供渐变。
  • raw_node_color:此kwargs不期望任意值,而是CSS颜色。这样,您始终可以完全控制您想要的节点颜色,如果ipysigma的任何实用工具都不适合您的特定用例。
  • default_node_color:具有default_前缀的kwargs始终期望一个值,该值将在最终表示中使用,因此在这里是一个CSS颜色,如果节点类别未在颜色调色板中找到或节点值不是数值且我们正在使用渐变,则将使用此颜色。
  • node_color_palette:默认情况下,ipysigma 使用 iwanthue 自动为给定数据中存在的类别生成合适的颜色调色板。但有时您可能想自定义所使用的颜色。在这种情况下,此关键字参数期望的是一个将类别值映射到CSS颜色(如 {'en': 'blue', 'fr': 'red'})的字典,或者来自 d3-scale-chromatic 的分类颜色方案名称,例如 Tableau10RdYlBu 等。
  • node_color_gradient:如果您想为节点使用颜色渐变以表示连续数据,则需要为此关键字参数提供包含“最低”和“最高”颜色的2元组(如 ("yellow", "red"))或来自 d3-scale-chromatic 的连续颜色渐变名称,例如 InfernoYlGn 等。
  • node_color_scale:最后,如果您为 node_color_gradient 提供了渐变并想将非线性缩放应用于给定的数据,您可以传递要使用的缩放名称,如 log 或包含缩放名称和可选参数的2元组,例如对数缩放的情况下的缩放基数。例如,这里有一个二进制对数缩放:("log", 2)

连续变量:以节点大小为例

  • node_size:此关键字参数期望与您的节点相关的某些任意数值。这些值可以按以下方式给出,请参阅 这里。然后它们将使用给定的缩放映射到 node_size_scale,然后映射到 node_size_range 给定的像素范围,最后在屏幕上使用。
  • raw_node_size:如果您想完全绕过缩放和范围,则此关键字参数直接接受被视为屏幕上的像素的值。
  • default_node_size:如果找不到相关值或该值不是有效的数字,则小部件将使用此大小,以像素为单位表示。
  • node_size_scale:如果您想将非线性缩放应用于给定的数据,可以传递要使用的缩放名称,如 log 或包含缩放名称和可选参数的2元组,例如对数缩放的情况下的缩放基数。例如,这里有一个二进制对数缩放:("log", 2)
  • node_size_range:此关键字参数允许您自定义应将节点数值映射到的像素输出范围。例如,如果我们想使节点大小在 1 像素和 25 像素之间,我们将给它 (1, 25)。请注意,大多数视觉变量都有默认范围,并且如果默认值适合您,则通常可以省略此关键字参数。

有关可用的视觉变量、它们期望的值以及如何自定义它们的全面视图,请阅读下一部分文档的 部分。

刻度、调色板和渐变

可用的缩放

  • lin:线性缩放,当未指定缩放时默认使用。
  • log:对数缩放。接受可选基数(默认为 e)。
  • log+1:对数缩放并增加一个值。这是一种常用的可视化技巧,旨在避免零的问题,这在使用一些典型的节点度量时很常见。接受可选基数(默认为 e)。
  • pow:幂缩放。接受可选指数(默认为 2)。
  • sqrt:平方根缩放(与幂缩放相同,但指数相反)。接受可选指数(默认为 2)。

所有 _scale 关键字参数都可以接受以下内容

  • 无(默认),则比例保持线性:node_size_scale=None
  • 直接指定比例名称:node_size_scale="log"
  • 包含比例名称和其参数的2元组:node_size_scale=("log", 2)

颜色调色板

默认情况下,颜色调色板由ipysigma根据iwanthue生成。ipysigma会首先计算要表示的不同类别的数量,按频率排序,并为最常用的类别生成最多10种颜色的调色板。其他类别将使用相关default_参数(例如default_node_color)提供的默认调色板。

注意,可以使用max_categorical_colors参数增加最大颜色数。

此外,调色板的生成会使用数据中的映射属性名称进行随机数生成,以确保调色板始终相同(如果名称和类别数量保持不变),但不同属性之间有所不同。

如果您不希望ipysigma为您生成颜色调色板,可以通过相关_palette参数(如node_color_palette)提供自己的调色板,或使用一些d3-scale-chromatic调色板(它们的名称以scheme开头)。

以下是ipysigma支持的调色板完整列表:AccentBluesBrBGBuGnBuPuCategory10Dark2GnBuGreensGreysOrRdOrangesPRGnPairedPastel1Pastel2PiYGPuBuPuBuGnPuOrPuRdPurplesRdBuRdGyRdPuRdYlBuRdYlGnRedsSet1Set2Set3SpectralTableau10YlGnYlGnBuYlOrBrYlOrRd

颜色渐变

颜色渐变可以定义为从“最低”到“最高”颜色的范围,例如("yellow", "red")

它们也可以来自任何d3-scale-chromatic连续渐变(它们的名称以interpolate开头)。

以下是ipysigma支持的渐变完整列表:BluesBrBGBuGnBuPuCividisCoolCubehelixDefaultGnBuGreensGreysInfernoMagmaOrRdOrangesPRGnPiYGPlasmaPuBuPuBuGnPuOrPuRdPurplesRainbowRdBuRdGyRdPuRdYlBuRdYlGnRedsSinebowSpectralTurboViridisWarmYlGnYlGnBuYlOrBrYlOrRd

小部件侧指标

由于ipysigma使用graphology,它也可以从其图论指标库中提取。

因此,node_metrics使您能够要求小部件自己计算节点指标,并将其映射到任何视觉变量上。

以下是指定要计算指标的方法

# node_metrics expects an iterable of metrics to compute:
Sigma(g, node_metrics=["louvain"], node_color="louvain")

# They can be specified by name, but you can also specify through
# a dictionary if you need parameters for the metrics:
Sigma(g, node_metrics=[{"name": "louvain", "resolution": 1.5}], node_color="louvain")

# You can also give a dictionary mapping resulting attribute name to
# the metric to compute if you don't want to map the result on an attribute
# having the same name as the metric:
Sigma(g, node_metrics={"community": "louvain"}, node_color="community")
Sigma(g, node_metrics={"community": {"name": "louvain", "resolution": 1.5}}, node_color="community")

可用的节点指标及其参数

  • louvain:通过模块优化进行社区检测的Louvain算法
    • resolution ?float [1]: 解析度参数。

常见问题解答

为什么显示的标签这么少?

标签渲染成本较高,可能会抵消使用sigma.js等WebGL渲染器渲染交互式图带来的好处。因此,sigma.js依赖于一个常量大小的网格来选择“最有价值”的标签进行显示,同时考虑相机的缩放。

您可以通过label_grid_cell_sizelabel_density调整此网格的参数。减小第一个参数或增加第二个参数将导致显示更多标签。

默认情况下,只有当节点的像素大小超过阈值时,才会显示节点的标签。您可以使用label_rendered_size_threshold参数更改此阈值。

最后,如果您不想处理所有这些无聊的事情,只想显示所有标签,因为您知道自己在做什么,不在乎性能,只需使用 show_all_labels=True 即可。

为什么我的某些类别被映射到灰色的?

ipysigma 为您生成调色板时,默认只使用最多 10 种颜色。此数字可以通过使用 max_categorical_colors 关键字参数来增加。有关调色板生成的更多信息,请参阅文档的这部分

一位设计师(手持棒球棒)告诉我,拥有超过 10 种分类颜色是不明智的,因为您将无法再区分它们。我的手被束缚住了。不要让我改变这个设置。

我设置了node_color的颜色,但小部件却显示随机的颜色

node_color 并不期望颜色本身,而是将任意数据映射到适合您的颜色调色板。如果您想直接指定颜色,请使用 raw_node_color 代替。有关视觉变量关键字参数命名的理由,请参阅文档的这部分

我的电脑声音像飞机起飞一样

当布局收敛(左侧的暂停按钮)时,不要忘记关闭布局。没有令人信服的方法可以自动检测布局何时收敛,所以我们必须依赖您,即用户,来指示何时完成。

如果您希望在实例化小部件时自动启动布局并确保在例如 10 秒后自动停止,请使用 start_layout=10

我的某些小部件只显示标签或一个故障的黑色框

您的 GPU 在浏览器标签中只能渲染这么多 WebGL 画布。因此,如果您创建了太多小部件(这取决于您的计算机和显卡的具体情况),它可能会通过删除图(但不删除标签,因为标签使用 2D 画布渲染)或通过出现故障来优雅地处理这种情况。

我的图表很丑,让它变得像Gephi一样美丽

使用 default_edge_type="curve"node_border_color_from="node"label_size=g.degreelabel_font="cursive",您应该会拥有一个令人眼花缭乱的 Gephi 图。

gephi

可用的视觉变量

node_color

node_color

类型

分类或连续。

原始值

HTML 命名颜色 或十六进制颜色或 rgb/rgba 颜色。例如:red#fff#a89971rgb(25, 25, 25)rgba(25, 145, 56, 0.5)

相关关键字参数

  • node_color
  • raw_node_color
  • default_node_color
  • node_color_palette
  • node_color_gradient
  • node_color_scale

node_color_saturation

node_color_saturation

类型

连续。

原始值

颜色的饱和度百分比。例如:0.10.96

相关关键字参数

  • node_color_saturation
  • raw_node_color_saturation
  • default_node_color_saturation
  • node_color_saturation_range
  • node_color_saturation_scale

node_size

node_size

类型

连续。

原始值

节点大小,即圆的半径,以像素为单位,使用默认相机(未缩放或未放大)。

相关关键字参数

  • node_size
  • raw_node_size
  • default_node_size
  • node_size_range
  • node_size_scale

node_label

node_label

类型

仅原始。

原始值

文本标签。

相关关键字参数

  • node_label
  • raw_node_label
  • default_node_label

node_label_size

node_label_size

类型

连续。

原始值

标签文本的字体大小,以像素为单位。

相关关键字参数

  • node_label_size
  • raw_node_label_size
  • default_node_label_size
  • node_label_size_range

node_label_color

node_label_color

类型

分类。

原始值

HTML 命名颜色 或十六进制颜色或 rgb/rgba 颜色。例如:red#fff#a89971rgb(25, 25, 25)rgba(25, 145, 56, 0.5)

相关关键字参数

  • node_label_color
  • raw_node_label_color
  • default_node_label_color
  • node_label_color_palette

node_border_size

node_border_size

类型

连续。

原始值

边框大小,以像素为单位,使用默认相机(未缩放或未放大)。

注意,此边框大小将添加到节点的半径上。

相关关键字参数

  • node_border_size
  • raw_node_border_size
  • default_node_border_size
  • node_border_size_range

备注

只有当定义了 node_border_sizenode_border_ratio AND node_border_color 时,边框才会显示在屏幕上。

node_border_ratio

node_border_ratio

类型

连续。

原始值

边框比率,以百分比表示,使用默认相机(未缩放或未放大)。

请注意,此边框比率将消耗节点的大小。

相关关键字参数

  • node_border_ratio
  • raw_node_border_ratio
  • default_node_border_ratio
  • node_border_ratio_range

备注

只有当定义了 node_border_sizenode_border_ratio AND node_border_color 时,边框才会显示在屏幕上。

node_border_color

node_border_color

类型

分类或连续。

原始值

HTML 命名颜色 或十六进制颜色或 rgb/rgba 颜色。例如:red#fff#a89971rgb(25, 25, 25)rgba(25, 145, 56, 0.5)

相关关键字参数

  • node_border_color
  • raw_node_border_color
  • default_node_border_color
  • node_border_color_palette
  • node_border_color_gradient
  • node_border_color_scale

备注

只有当定义了 node_border_sizenode_border_ratio AND node_border_color 时,边框才会显示在屏幕上。

node_pictogram

node_pictogram

类型

分类。

原始值

任何 Google Material Icon 的名称,如这里列出的(名称必须是小写和蛇形命名法,例如,名称 "Arrow Drop Done" 应该给 ipysigma 的是 arrow_drop_done)。

或者,也可以提供公开可访问的svg图标url,例如:https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/arrow_drop_down/default/48px.svg

相关关键字参数

  • raw_node_pictogram
  • default_node_pictogram

备注

仅在定义了node_pictogramnode_pictogram_color时,屏幕上才会显示图符。

node_pictogram_color

node_pictogram_color

类型

分类。

原始值

HTML 命名颜色 或十六进制颜色或 rgb/rgba 颜色。例如:red#fff#a89971rgb(25, 25, 25)rgba(25, 145, 56, 0.5)

相关关键字参数

  • node_pictogram_color
  • raw_node_pictogram_color
  • default_node_pictogram_color
  • node_pictogram_color_palette

备注

仅在定义了node_pictogramnode_pictogram_color时,屏幕上才会显示图符。

node_shape

node_shape

类型

分类。

原始值

支持的形状名称,例如:circletrianglesquarepentagonstarhexagonheartcloud

如果你喜欢冒险,它也可以是任何谷歌材质图标名称,如这里列出(名称必须为小写和snake_case,例如名称 "Arrow Drop Done" 应该给 ipysigma 的是 arrow_drop_done)。

最后,也可以提供公开可访问的svg图标url,例如:https://fonts.gstatic.com/s/i/short-term/release/materialsymbolsoutlined/arrow_drop_down/default/48px.svg

相关关键字参数

  • node_shape
  • raw_node_shape
  • default_node_shape
  • node_shape_mapping

注意

目前节点形状不能与边框、图符或光环一起使用。

node_halo_size

node_halo_size

类型

连续。

原始值

以像素为单位的光环大小偏移,在默认相机(未缩放且未取消缩放)下。因此,完整的光环半径将是其大小加上其节点半径。

相关关键字参数

  • node_halo_size
  • raw_node_halo_size
  • default_node_halo_size
  • node_halo_size_range
  • node_halo_size_scale

node_halo_color

node_halo_color

类型

分类或连续。

原始值

HTML 命名颜色 或十六进制颜色或 rgb/rgba 颜色。例如:red#fff#a89971rgb(25, 25, 25)rgba(25, 145, 56, 0.5)

相关关键字参数

  • node_halo_color
  • raw_node_halo_color
  • default_node_halo_color
  • node_halo_color_palette
  • node_halo_color_gradient
  • node_halo_color_scale

edge_color

edge_color

类型

分类或连续。

原始值

HTML 命名颜色 或十六进制颜色或 rgb/rgba 颜色。例如:red#fff#a89971rgb(25, 25, 25)rgba(25, 145, 56, 0.5)

相关关键字参数

  • edge_color
  • raw_edge_color
  • default_edge_color
  • edge_color_palette
  • edge_color_gradient
  • edge_color_scale

edge_type

edge_type

edge_size

edge_size

类型

连续。

原始值

以像素为单位的边厚度,在默认相机(未缩放且未取消缩放)下。

相关关键字参数

  • edge_size
  • raw_edge_size
  • default_edge_size
  • edge_size_range
  • edge_size_scale

edge_curveness

edge_curveness

类型

连续。

原始值

一个百分比。注意,它可以超过1,而0将使边消失。

相关关键字参数

  • default_edge_curveness

edge_label

edge_label

类型

仅原始。

原始值

文本标签。

相关关键字参数

  • edge_label
  • raw_edge_label
  • default_edge_label

API参考

Sigma

参数

  • graph nx.AnyGraph or ig.AnyGraph - 要探索的网络x或igraph图形实例。
  • name str, optional None - 图形的名称。
  • height int, optional 500 - 小部件容器的高度(以像素为单位)。
  • background_color str, optional "white" - 作为图形背景使用的CSS颜色。
  • raw_height str, optional None - 原始CSS高度。在有些HTML嵌入场景中可能有用。只有当你知道你在做什么时才使用此选项。
  • start_layout bool or float, optional False - 是否在挂载小部件时自动启动布局算法。如果提供数字,布局算法将启动并在这么多秒后自动停止。
  • node_metrics Iterable or Mapping, optional None - 小部件JavaScript代码计算的节点度量。目前仅支持"louvain"进行社区检测。
  • layout_settings dict, optional None - ForceAtlas2布局的设置(在此处列出:https://graphology.github.io/standard-library/layout-forceatlas2#settings)。
  • clickable_edges bool, optional False - 是否允许用户单击边以显示其信息。这可能在较大的图形上产生性能成本。
  • process_gexf_viz bool, optional True - 是否处理gexf文件viz数据以显示节点和边。
  • max_categorical_colors int, 可选 10 - 生成分类调色的最大颜色数。频率排序后的类别,超过此最大值将使用默认颜色。
  • hide_info_panel bool, 可选 False - 是否隐藏小部件右侧的信息面板。
  • hide_search bool, 可选 False - 是否隐藏小部件右侧的搜索栏。
  • hide_edges_on_move bool, 可选 False - 当移动图时是否隐藏边缘。当图太大时,这可能有助于提高性能。
  • sync_key str, 可选 - 小部件用于同步同一图形多个视图实例之间事件的键。在可能的情况下,优先使用 SigmaGrid,它将为您处理小部件的此高级功能。
  • sync_targets 可迭代对象,可选 ("layout", "camera", "selection", "hover") - 通过 sync_key 关键字参数同步的目标名称。目标包括 "layout","camera","selection" 和 "hover"。
  • camera_state dict, 可选 {"x": 0.5, "y": 0.5, "ratio": 1, "angle": 0} - 小部件相机的初始状态(可以使用 #.get_camera_state 方法检索)。
  • selected_node str 或 int, 可选 None - 小部件中初始选择的节点的键(可以使用 #.get_selected_node 方法检索)。
  • selected_edge tuple, 可选 None - 小部件中初始选择的边的 (源, 目标) 元组(可以使用 #.get_selected_edge 方法检索)。
  • selected_node_category_values 可迭代对象,可选 None - 选择的节点类别值的列表(可以使用 #.get_selected_node_category_values 方法检索)。
  • selected_edge_category_values 可迭代对象,可选 None - 选择的边类别值的列表(可以使用 #.get_selected_edge_category_values 方法检索)。
  • label_font str, 可选 "sans-serif" - 与标签一起使用的字体。
  • label_density int, 可选 1 - 默认相机缩放时每个网格单元格中要显示的标签数量。
  • label_grid_cell_size int, 可选 250 - 标签选择网格中正方形单元格的像素大小。
  • label_rendered_size_threshold int, 可选 None - 节点必须具有的最小实际渲染大小(在相机缩放操作之后)才能允许其标签显示在屏幕上。如果为 None,则阈值将基于您图形中最大节点大小推断。
  • show_all_labels bool, 可选 False - 宏设置确保大多数,如果不是所有,标签都显示在屏幕上。对于较大的图形,可能会影响性能。
  • layout Mapping, 可选 None - 节点位置,表示为 {node: {x, y} 映射。
  • node_color VariableData, 可选 None - 用于分类或连续节点颜色的数据。
  • raw_node_color VariableData, 可选 "color" - 用于节点颜色的原始数据(CSS 颜色)。
  • node_color_gradient 可迭代对象或 str, 可选 None - 映射到颜色的渐变,例如:(("yellow", "red")),或 d3 连续颜色比例的名称(在 https://github.com/d3/d3-scale-chromatic#readme 找到),例如:"Viridis"。如果给出,则节点颜色将被解释为连续而不是分类。
  • node_color_scale 元组或字符串,可选 None - 用于节点颜色的缩放比例。可以是一个包含缩放名称和额外参数(如指数)的元组,或者仅使用缩放名称:例如 ("log", 2)"pow"。可用的缩放包括:"lin""log""log+1""pow""sqrt"。如果提供 None,则默认缩放为线性 "lin"
  • node_color_palette 映射或字符串,可选 None - 从类别值到 CSS 颜色的映射或 d3 类别颜色缩放(见此处:https://github.com/d3/d3-scale-chromatic#readme)的名称。
  • default_node_color 字符串,可选 "#999" - 节点的默认颜色。
  • node_color_saturation 可变数据,可选 None - 用于连续节点颜色饱和度的数据。
  • raw_node_color_saturation 可变数据,可选 None - 用于节点颜色饱和度的原始数据(百分比)。
  • node_color_saturation_scale 元组或字符串,可选 None - 用于节点颜色饱和度的缩放比例。可以是一个包含缩放名称和额外参数(如指数)的元组,或者仅使用缩放名称:例如 ("log", 2)"pow"。可用的缩放包括:"lin""log""log+1""pow""sqrt"。如果提供 None,则默认缩放为线性 "lin"
  • node_color_saturation_range 可迭代对象,可选 (0, 1) - 映射到的百分比范围,例如:(0, 0.7)
  • default_node_color_saturation 字符串,可选 None - 节点的默认颜色饱和度。
  • node_border_color 可变数据,可选 None - 用于分类或连续节点边框颜色的数据。
  • raw_node_border_color 可变数据,可选 "color" - 用于节点边框颜色的原始数据(CSS 颜色)。
  • node_border_color_gradient 可迭代对象或字符串,可选 None - 颜色渐变,用于映射,例如:(("yellow", "red")),或 d3 连续颜色缩放(见此处:https://github.com/d3/d3-scale-chromatic#readme)的名称,例如:"Viridis"。如果提供,节点边框颜色将被解释为连续而不是分类。
  • node_border_color_palette 映射或字符串,可选 None - 从类别值到 CSS 颜色的映射或 d3 类别颜色缩放的名称(见此处:https://github.com/d3/d3-scale-chromatic#readme)。
  • node_border_color_from 字符串,可选 None - 可选地从以下选项中选择节点边框颜色:"node"。
  • default_node_border_color 字符串,可选 - 节点边框的默认颜色。
  • node_border_size 可变数据,可选 None - 用于连续节点边框大小的数据。
  • raw_node_border_size 可变数据,可选 None - 用于节点边框大小的原始数据(像素大小)。
  • node_border_size_range 可迭代对象,可选 (1, 5) - 映射到的像素大小范围,例如:(1, 15)
  • default_node_border_size 整数或浮点数,可选 1 - 节点边框的默认大小。
  • node_border_ratio 可变数据,可选 None - 用于连续节点边框比率的值。
  • raw_node_border_ratio 可变数据,可选 None - 用于节点边框比率的原始数据(像素比率)。
  • node_border_ratio_range 可迭代对象,可选 (0.1, 0.5) - 映射到的像素比率范围,例如:(1, 15)
  • default_node_border_ratio 整数或浮点数,可选 0.1 - 节点边框的默认比率。
  • raw_node_pictogram 变量数据,可选 None - 用于节点图标的原始数据(图标名称,如此处所示:https://fonts.google.com/icons 或公开可访问的svg图标url)。
  • default_node_pictogram str,可选 None - 节点的默认图标。
  • node_pictogram_color 变量数据,可选 None - 用于分类或连续节点图标颜色的数据。
  • raw_node_pictogram_color 变量数据,可选 "color" - 用于节点图标颜色的原始数据(CSS颜色)。
  • node_pictogram_color_palette 映射或str,可选 None - 从类别值到CSS颜色的映射或d3类别颜色尺度的名称(见此处:https://github.com/d3/d3-scale-chromatic#readme)。
  • default_node_pictogram_color str,可选 "black" - 节点图标的默认颜色。
  • node_shape 变量数据,可选 None - 用于将节点形状映射到的分类数据。
  • raw_node_shape 变量数据,可选 None - 用于节点形状的原始数据(形状名称,或图标名称,如此处所示:https://fonts.google.com/icons 或公开可访问的svg图标url)。
  • node_shape_mapping 映射,可选 - 从类别值到节点形状的映射。
  • default_node_shape str,可选 None - 节点的默认形状。
  • node_halo_color 变量数据,可选 None - 用于节点光环颜色的分类或连续数据。
  • raw_node_halo_color 变量数据,可选 "color" - 用于节点光环颜色的原始数据(CSS颜色)。
  • node_halo_color_gradient 可迭代或str,可选 None - 要映射的颜色渐变,例如:(("yellow", "red")),或d3连续颜色尺度的名称(见此处:https://github.com/d3/d3-scale-chromatic#readme),例如:"Viridis"。如果提供,节点光环颜色将解释为连续的,而不是分类的。
  • node_halo_color_palette 映射或str,可选 None - 从类别值到CSS颜色的映射或d3类别颜色尺度的名称(见此处:https://github.com/d3/d3-scale-chromatic#readme)。
  • default_node_halo_color str,可选 "red" - 节点光环的默认颜色。
  • node_halo_size 变量数据,可选 None - 用于连续节点光环大小的数据。
  • raw_node_halo_size 变量数据,可选 None - 用于节点光环大小的原始数据(像素大小)。
  • node_halo_size_range 可迭代,可选 (0, 20) - 要映射的像素大小范围,例如:(1, 15)
  • default_node_halo_size int或float,可选 0 - 节点光环的默认大小。
  • node_size 变量数据,可选 "size" - 用于连续节点大小的数据。
  • raw_node_size 变量数据,可选 None - 用于节点大小的原始数据(像素大小)。
  • node_size_range 可迭代,可选 (3, 15) - 要映射的像素大小范围,例如:(1, 15)
  • node_size_scale 元组或str,可选 None - 用于节点大小的比例。可以是包含比例名称和附加参数(如指数)的元组,或仅使用比例名称:例如 ("log", 2)"pow"。可用比例包括:"lin""log""log+1""pow""sqrt"。如果没有提供,比例将默认为线性比例 "lin"
  • default_node_size int或float,可选 None - 节点的默认大小。
  • node_label VariableData,可选 None - 作为节点标签使用的数据。
  • raw_node_label VariableData,可选 "label" - 用于节点标签的原始数据(标签字符串)。
  • default_node_label str,可选 None - 节点的默认标签。
  • node_label_size VariableData,可选 None - 作为连续节点标签大小使用的数据。
  • raw_node_label_size VariableData,可选 None - 用于节点标签大小的原始数据(像素大小)。
  • node_label_size_range 可迭代对象,可选 (8, 25) - 要映射到的大小范围(像素),例如:(1, 15)
  • default_node_label_size int或float,可选 12 - 节点标签的默认大小。
  • node_label_color VariableData,可选 None - 作为分类或连续节点标签颜色使用的数组。
  • raw_node_label_color VariableData,可选 None - 用于节点标签颜色的原始数据(CSS颜色)。
  • node_label_color_palette 映射或str,可选 None - 从类别值到CSS颜色的映射,或d3分类颜色尺度的名称(见此处:https://github.com/d3/d3-scale-chromatic#readme)。
  • default_node_label_color str,可选 "black" - 节点标签的默认颜色。
  • node_zindex VariableData,可选 None - 用于在渲染前排序节点的数值数据。zindex值较高的节点将绘制在zindex值较低的节点之上。
  • edge_color VariableData,可选 None - 作为分类或连续边颜色使用的数组。
  • raw_edge_color VariableData,可选 "color" - 用于边颜色的原始数据(CSS颜色)。
  • edge_color_gradient 可迭代对象或str,可选 None - 要映射到的颜色渐变,例如:(("yellow", "red")),或d3连续颜色尺度的名称(见此处:https://github.com/d3/d3-scale-chromatic#readme),例如:"Viridis"。如果提供,则边颜色将被解释为连续而不是分类。
  • edge_color_scale 元组或str,可选 None - 用于边颜色的尺度。可以是包含尺度名称和附加参数(如指数)的元组,也可以是仅包含尺度名称的字符串:例如 ("log", 2)"pow"。可用的尺度包括:"lin""log""log+1""pow""sqrt"。如果提供None,则尺度将默认为线性("lin")。
  • edge_color_palette 映射或str,可选 None - 从类别值到CSS颜色的映射,或d3分类颜色尺度的名称(见此处:https://github.com/d3/d3-scale-chromatic#readme)。
  • default_edge_color str,可选 "#999" - 边的默认颜色。
  • default_edge_type str,可选 None - 用来绘制边的默认类型。可以是以下之一:"rectangle""line""curve""arrow""triangle"。如果选择 "arrow""triangle" 并与无向图一起使用,将引发错误。如果为None,则默认为 "rectangle"
  • edge_size VariableData,可选 "size" - 作为连续边大小使用的数组。
  • raw_edge_size VariableData,可选 None - 用于边大小的原始数据(像素大小)。
  • edge_size_range 可迭代对象,可选 (3, 15) - 要映射到的像素大小范围,例如:(1, 15)
  • edge_size_scale 元组或字符串,可选 None - 用于边大小的缩放比例。可以是一个包含缩放名称和附加参数(如指数)的元组,或者只使用缩放名称:例如 ("log", 2)"pow"。可用的缩放包括:"lin""log""log+1""pow""sqrt"。如果给定 None,则默认缩放为线性 "lin"
  • default_edge_size 整数或浮点数,可选 None - 边的默认大小。
  • default_edge_curveness 字符串,可选 0.25 - 当 default_edge_type"curve" 时,边的曲率因子。
  • edge_label VariableData,可选 None - 用作边标签的数据。
  • raw_edge_label VariableData,可选 "label" - 用作边标签的原始数据(标签字符串)。
  • edge_weight VariableData,可选 - 用作加权度量布局计算的边权重数值数据(与大小不同,大小用于渲染)。
  • edge_zindex VariableData,可选 None - 用于在渲染前对边进行排序的数值数据。zindex 较高的边将绘制在 zindex 较低的边之上。

#.get_layout

返回图布局的方法,即小部件中当前节点的坐标映射为字典的方法。

#.get_camera_state

返回小部件当前相机状态的方法,作为一个 {x, y, ratio, angle} 字典。

#.get_selected_node

如果没有选择,则返回当前选择的节点或 None

#.get_selected_edge

如果没有选择,则返回当前选择的边作为一个 (源,目标) 元组或 None

#.get_selected_node_category_values

返回当前选择的节点类别值集合或 None

#.get_selected_edge_category_values

返回当前选择的边类别值集合或 None

#.render_snapshot

将小部件渲染为栅格图像的方法。

#.to_html

将小部件渲染为可托管在其他静态位置的独立 HTML 文件的方法。

参数

  • path PathLike 或文件:保存 HTML 文件的位置。

Sigma.set_defaults

静态方法,可用于覆盖 Sigma 类 kwargs 的某些默认值。

参数

  • height 整数,可选:小部件的默认像素高度。
  • background_color 字符串,可选:默认背景颜色。
  • max_categorical_colors 整数,可选:生成调色板的默认最大颜色数。
  • node_size_range 元组,可选:节点的默认像素大小范围。
  • edge_size_range 元组,可选:边的默认像素大小范围。

Sigma.write_html

接受与 Sigma 相同的 kwargs 的静态方法,并将小部件作为独立 HTML 文件渲染,可以在其他地方静态托管。

参数

  • graph nx.AnyGraph 或 ig.AnyGraph:要表示的图。
  • path PathLike 或文件:保存 HTML 文件的位置。
  • fullscreen 布尔值,可选 [False]:是否通过占用整个屏幕空间来显示小部件。如果 False,则遵循给定的 height
  • **kwarg:Sigma 接受的任何 kwarg。

SigmaGrid

参数

  • graph nx.AnyGraph 或 ig.AnyGraph - 可视化的网络x或igraph图实例。
  • columns 整数,可选 2:一行中显示的最大视图数。
  • sync_key 字符串,可选 None:要使用的同步键。如果没有给出,则网格将自动生成一个。
  • views 列表,可选 None:将用于实例化底层 Sigma 视图的 kwarg 字典列表,作为使用 #.add 方法的替代。
  • **kwargs - 其他任何 kwarg 都将按原样传递到 Sigma 视图中。

#.add

方法一可以作为替代品或与SigmaGrid构造函数的views参数结合使用,向网格添加新的Sigma视图。它接受任何由Sigma接受的参数,并返回自身以方便链式调用。

SigmaGrid(g, node_color='category').add(node_size=g.degree).add(node_size='occurrences')

如何引用

Guillaume Plique. (2022). ipysigma,使用sigma.js渲染交互式网络的Jupyter小部件。Zenodo. https://doi.org/10.5281/zenodo.7446059

支持者: