为什么我的代码不能绘制有向图的箭头?
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 = '-|>')
我用 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 = '-|>')