python - 是否可以根据节点大小更改字体大小?
问题描述
根据NetworkX,
draw_networkx(G, pos=None, arrows=True, with_labels=True, **kwds),
node_size
可以是标量或数组,但font_size
必须是整数。如果节点很大,如何将字体大小更改为更大?实际上,是否可以根据节点大小更改字体大小?
解决方案
实际上没有一种方法可以传递字体大小的数组。两者都只接受整数作为所有标签的字体大小nx.draw
。draw_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')
推荐阅读
- c# - 导航视图不会打开不同的表单
- html - 链接在 Firefox 中中断但在 Chrome 中没有
- php - 我的函数无法将数据插入数据库
- react-native - 连接域和应用程序逻辑以在 UI 中呈现实体
- python - opencv - 如何在没有比例的情况下进行模板匹配?
- java - 使用嵌套的 while 循环添加到 ArrayList 时出现 IndexOutOfBoundsException
- java - 类在添加到集合时不保留新的关联对象
- python - 这是实现迭代器的好方法吗?
- c++ - 如何将此数学方程式转换为 C++ 语句?
- git - 可以让我在团队中开展项目的最小 git 命令集是什么