本示例展示了如何使用 igraph.GraphBase.bridges() 计算和可视化图中的 。有关割点的示例,请参见 割点

import igraph as ig
import matplotlib.pyplot as plt

我们从一个简单的例子开始。我们首先构建一个包含一些桥的图。

g = ig.Graph(14, [(0, 1), (1, 2), (2, 3), (0, 3), (0, 2), (1, 3), (3, 4),
        (4, 5), (5, 6), (6, 4), (6, 7), (7, 8), (7, 9), (9, 10), (10 ,11),
        (11 ,7), (7, 10), (8, 9), (8, 10), (5, 12), (12, 13)])

然后我们可以使用一个函数来实际查找桥,即连接图不同部分的边。

bridges = g.bridges()

我们为这些边设置了单独的颜色,以便在绘图中强调它们。

g.es["color"] = "gray"
g.es[bridges]["color"] = "red"
g.es["width"] = 0.8
g.es[bridges]["width"] = 1.2

最后,我们使用这种强调方式绘制图。

fig, ax = plt.subplots()
ig.plot(
    g,
    target=ax,
    vertex_size=30,
    vertex_color="lightblue",
    vertex_label=range(g.vcount())
)
plt.show()
bridges

高级: 切割效果

桥是这样的边,当它们被移除时,会将图分成比原来更多的连通分量。为了强调这些边从图中移除的效果,我们可以通过使用边标签为每个桥添加小的“x”效果。

和以前一样,我们首先构建图。

g = ig.Graph(14, [(0, 1), (1, 2), (2, 3), (0, 3), (0, 2), (1, 3), (3, 4),
        (4, 5), (5, 6), (6, 4), (6, 7), (7, 8), (7, 9), (9, 10), (10 ,11),
        (11 ,7), (7, 10), (8, 9), (8, 10), (5, 12), (12, 13)])

然后我们找到并设置桥的颜色,但这次我们还为这些边设置了标签。

bridges = g.bridges()
g.es["color"] = "gray"
g.es[bridges]["color"] = "red"
g.es["width"] = 0.8
g.es[bridges]["width"] = 1.2
g.es["label"] = ""
g.es[bridges]["label"] = "x"

最后,我们可以绘制该图

fig, ax = plt.subplots()
ig.plot(
    g,
    target=ax,
    vertex_size=30,
    vertex_color="lightblue",
    vertex_label=range(g.vcount()),
    edge_background="#FFF0",    # transparent background color
    edge_align_label=True,      # make sure labels are aligned with the edge
    edge_label=g.es["label"],
    edge_label_color="red"
)
plt.show()
bridges

脚本总运行时间: (0 分 0.244 秒)

此图库由 Sphinx-Gallery 生成