如何更改networkx中边的“位置”?

问题描述 投票:0回答:1

(从左上角开始顺时针将节点标记为 1 到 4)

如何更改边 13 以使其移至正方形“外部”,如右侧的图所示,在 networkx 中?

(注意:我不是要求函数“draw_planar”)

谢谢

python plot networkx
1个回答
0
投票

使用注释的连接样式的一个可能选项。

您可以从绘制节点开始:

fig, ax = plt.subplots(figsize=(4, 4))

nx.draw_networkx_nodes(
    G, pos, ax=ax,
    node_color="lime", alpha=0.4, edgecolors="black",
)

nx.draw_networkx_labels(G, pos, ax=ax)

然后分两步修边:

EDGE_TO_BEND = (1, 3)

nx.draw_networkx_edges(
    G, pos, ax=ax, edgelist=[e for e in G.edges() if e != EDGE_TO_BEND]
)

nx.draw_networkx_edges(
    G, pos, ax=ax, edgelist=[EDGE_TO_BEND],
    edge_color="tab:red", width=4, alpha=0.5,
    arrows=True, connectionstyle="arc3,rad=1.2",
)

ax.axis("off")

plt.show()

使用的图表(

G
):

import networkx as nx

G = nx.Graph([(1, 2), (2, 3), (3, 4), (4, 1), (1, 3), (2, 4)])

pos = {1: (0, 1), 2: (1, 1), 3: (1, 0), 4: (0, 0)}
© www.soinside.com 2019 - 2024. All rights reserved.