我有以下图表:
graph = {("A","A"): 3, ("A","B"): 4, ("A","C"): 1}
我正在尝试绘制一个标有数字3的节点(A)的循环图。该循环应该类似于节点(1) 这里 的循环。
它必须是一个无向图。
到目前为止,我正在使用以下内容:
import networkx as nx
import matplotlib.pyplot as plt
G=nx.Graph()
for edge in graph:
G.add_edge(edge[0], edge[1])
graph_pos=nx.shell_layout(G)
nx.draw_networkx_nodes(G,graph_pos)
nx.draw_networkx_edges(G,graph_pos)
nx.draw_networkx_labels(G, graph_pos)
nx.draw_networkx_edge_labels(G, graph_pos, edge_labels = graph)
plt.show()
输出结果是: 如您所见,即使存在边缘(“A”,“A”),也没有节点“A”周围的循环。 有什么想法可以让它发生吗?
编辑 - 为什么不是重复?
问题Matplotlib and Networkx - drawing a self loop node 是针对定向图的。 当您使用
G=nx.MultiDiGraph
创建图形时,可以使用G.graph['edge']
设置边缘属性。使用
nx.Graph()
(无向图),G.graph['edge']
的结果是一个空字典。本问题与该问题的本质区别在于,我使用
nx.Graph
而该问题使用nx.MultiDiGraph
。
nx.MultiDiGraph
的答案,意味着一个有向图。我需要一个无向图。当您创建G = nx.Graph()
时,不存在G.graph['edge']
这样的东西。 - regina_fallangi