【问题标题】:Draw specific edges in graph in NetworkX在 NetworkX 中的图中绘制特定边
【发布时间】:2022-11-12 05:16:02
【问题描述】:

我有一个看起来像这样的图表:

默认情况下,绘制图形将包括所有节点和边,但我需要使用连接节点的数组来绘制一些特定的边,如下所示:

[['A', 'C', 'B', 'A'], ['A', 'E', 'D', 'F', 'A'], ['A', 'H', 'G', 'I', 'A']]

这是我的代码:

G = nx.DiGraph(edge_list)
nx.draw(G, with_labels=True, node_color=['aqua'] + ['pink'] * (len(G.nodes) - 1))

最后是我的edge_list

[('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('A', 'F'), ('A', 'G'), ('A', 'H'), ('A', 'I'), ('A', 'J'), ('B', 'A'), ('B', 'C'), ('B', 'D'), ('B', 'E'), ('B', 'F'), ('B', 'G'), ('B', 'H'), ('B', 'I'), ('B', 'J'), ('C', 'A'), ('C', 'B'), ('C', 'D'), ('C', 'E'), ('C', 'F'), ('C', 'G'), ('C', 'H'), ('C', 'I'), ('C', 'J'), ('D', 'A'), ('D', 'B'), ('D', 'C'), ('D', 'E'), ('D', 'F'), ('D', 'G'), ('D', 'H'), ('D', 'I'), ('D', 'J'), ('E', 'A'), ('E', 'B'), ('E', 'C'), ('E', 'D'), ('E', 'F'), ('E', 'G'), ('E', 'H'), ('E', 'I'), ('E', 'J'), ('F', 'A'), ('F', 'B'), ('F', 'C'), ('F', 'D'), ('F', 'E'), ('F', 'G'), ('F', 'H'), ('F', 'I'), ('F', 'J'), ('G', 'A'), ('G', 'B'), ('G', 'C'), ('G', 'D'), ('G', 'E'), ('G', 'F'), ('G', 'H'), ('G', 'I'), ('G', 'J'), ('H', 'A'), ('H', 'B'), ('H', 'C'), ('H', 'D'), ('H', 'E'), ('H', 'F'), ('H', 'G'), ('H', 'I'), ('H', 'J'), ('I', 'A'), ('I', 'B'), ('I', 'C'), ('I', 'D'), ('I', 'E'), ('I', 'F'), ('I', 'G'), ('I', 'H'), ('I', 'J'), ('J', 'A'), ('J', 'B'), ('J', 'C'), ('J', 'D'), ('J', 'E'), ('J', 'F'), ('J', 'G'), ('J', 'H'), ('J', 'I')]

如何才能做到这一点?

【问题讨论】:

  • 请附上您的edge_list,以便我们重现此图
  • @BenGrossmann 更新了问题
  • 没关系,我找到了解决方法

标签: python networkx


【解决方案1】:

如果我理解正确,您可以执行以下操作:

import numpy as np
import matplotlib.pyplot as plt
import networkx as nx

# G = nx.gn_graph(10)

G = nx.complete_graph(10).to_directed()
for edge in G.edges:
    G.add_edge(*edge[::-1])

cycles = [[0,1,2,0],[0,3,4,5,6,0],[0,7,8,0]]

H = nx.DiGraph()

for cyc in cycles:
    for a,b in zip(cyc,cyc[1:]):
        H.add_edge(a,b)

plt.figure(figsize = (15,5))
plt.subplot(1,2, 1)
pos = nx.spring_layout(G)
colors = ['aqua'] + ['pink']*(len(G)-1)
nx.draw(G, pos = pos, with_labels = True, node_color = colors)

plt.subplot(1,2, 2)
colors = ['aqua'] + ['pink']*(len(H)-1)
nx.draw(H, pos = pos, with_labels = True, node_color = colors)
plt.show()

结果图:

【讨论】:

    猜你喜欢
    • 2021-12-04
    • 2020-06-24
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多