为什么我的代码不能绘制有向图的箭头?

Why my code can't plot the arrow of a directed graph?

我用 networkx.DiGraph() 生成了一个有向图,但是当我尝试绘制它时,箭头没有出现。

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()
G.add_node(0, node_color="red")

G.add_node(1, node_color="orange")
G.add_node(2, node_color="orange")
G.add_node(3, node_color="orange")

G.add_node(4, node_color="yellow")
G.add_node(5, node_color="yellow")
G.add_node(6, node_color="yellow")
G.add_node(7, node_color="yellow")

G.add_edges_from([(0, 1),
                 (0, 2),
                 (0, 3),
                 (1, 4),
                 (2, 5),
                 (3, 6),
                 (3, 7)])

fig=plt.gcf()
fig.set_size_inches(100, 100)
ax=plt.gca()
pos=nx.circular_layout(G, center=(0, 0))
nx.draw_networkx_nodes(G, pos, cmap=plt.get_cmap('jet'), node_size = 5000)
nx.draw_networkx_edges(G, pos, arrows=True, arrowstyle = '-|>')

我希望 plt 有这样的箭头 Expected

但我的结果是这样的,边缘没有箭头: My result

您的节点大小是 5000(单位是平方分,所以我相信您的圆大约一英寸宽)。这可能是需要的,因为您的地块是 100 英寸 x 100 英寸(远远超过 2 米 x 2 米)

默认箭头大小为 10(我相信箭头所用的单位意味着它长约 4 磅,宽约 2 磅,或约 .06 x .03 英寸),相比之下太小了。

您必须增加箭头大小或减小节点大小和图形大小。这里只有节点、箭头和图形的默认大小:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.DiGraph()
G.add_node(0, node_color="red")

G.add_node(1, node_color="orange")
G.add_node(2, node_color="orange")
G.add_node(3, node_color="orange")

G.add_node(4, node_color="yellow")
G.add_node(5, node_color="yellow")
G.add_node(6, node_color="yellow")
G.add_node(7, node_color="yellow")

G.add_edges_from([(0, 1),
                 (0, 2),
                 (0, 3),
                 (1, 4),
                 (2, 5),
                 (3, 6),
                 (3, 7)])

fig=plt.gcf()
ax=plt.gca()
pos=nx.circular_layout(G, center=(0, 0))
nx.draw_networkx_nodes(G, pos, cmap=plt.get_cmap('jet'))
nx.draw_networkx_edges(G, pos, arrows=True, arrowstyle = '-|>')