我想改善我的图表。存在以下问题:
感谢有人可以给我一些笔记或建议
这是我的代码:
Unique_liss= ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm']
edgesList= [('a', 'b'), ('b', 'c '), ('c ', 'd'), ('d', 'e'), ('d', 'f'), ('e', 'g'), ('f', 'g'), ('g', 'h'), ('h', 'i '), ('i ', 'j'), ('j', 'k'), ('j', 'l'), ('k', 'm'), ('l', 'm')]
import networkx as nx
g = nx.DiGraph()
g.add_nodes_from(Unique_liss)
g.add_edges_from(edgesList)
nx.to_pandas_adjacency(g)
G = nx.DiGraph()
for node in edgesList:
G.add_edge(*node,sep=',')
A = nx.adjacency_matrix(G).A
nx.draw(G, with_labels=True, node_size = 2000,
node_color = 'skyblue')
为了具有确定性的节点布局,可以使用NetworkX的layouts之一,它可以指定seed
。这是上图使用nx.spring_layout
的示例:
nx.spring_layout
from matplotlib import pyplot as plt
seed = 31
pos = nx.spring_layout(G, seed=seed)
plt.figure(figsize=(10,6))
nx.draw(G, pos=pos, with_labels=True, node_size = 1500,
seed=seed, node_color = 'skyblue')
如果重新运行以上内容,您将获得完全相同的布局。
为了自定义图形大小,您有几个选择。如上所述,最简单的一次将图形尺寸设置为。您还可以使用plt.figure(figsize=(x,y))
中的scale
参数在图形中控制图形的大小。
根据最后一点,您似乎无法为每个边缘设置特定的箭头大小。从[docs](arrowsize:int,optional(default = 10))中,您拥有的是:
arrowsize:int,可选(默认= 10)
因此您只能将此值设置为nx.spring_layout
,这将导致所有边缘箭头的大小相等。