是否可以根据节点大小更改字体大小?

Jan*_*Jan 3 python networkx python-3.x

根据NetworkX 的说法,

draw_networkx(G, pos=None, arrows=True, with_labels=True, **kwds), 
Run Code Online (Sandbox Code Playgroud)

node_size可以是标量或数组,但font_size必须是整数。如果节点很大,如何将字体大小更改为更大?事实上,是否可以根据节点大小更改字体大小?

yat*_*atu 6

没有真正的传递字体大小数组的方法。双方nx.drawdraw_networkx_labels只接受整数作为字体大小为所有标签。您必须遍历节点并通过指定大小的 matplotlib 添加文本。这是一个示例,与节点度成比例地缩放:

from matplotlib.pyplot import figure, text

G=nx.Graph()
e=[(1,2),(1,5),(2,3),(3,6),(5,6),(4,2),(4,3),(3,5),(1,3)]
G.add_edges_from(e)
pos = nx.spring_layout(G)

figure(figsize=(10,6))
d = dict(G.degree)
nx.draw(G, pos=pos,node_color='orange', 
        with_labels=False, 
        node_size=[d[k]*300 for k in d])
for node, (x, y) in pos.items():
    text(x, y, node, fontsize=d[node]*5, ha='center', va='center')
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明