python - Networkx Graph 绘图节点权重
问题描述
我想为无向图中的每个节点分配节点权重。我使用以下 MWE:
import sys
import matplotlib.pyplot as plt
import networkx as nx
G = nx.Graph()
G.add_node(0)
G.add_node(1, weight=2)
G.add_node(2, weight=3)
nx.draw(G, with_labels=True)
plt.show()
实现这一点的最简单方法是什么?在 SO 上,材料主要用于边缘权重,或根据节点权重更改节点大小。
解决方案
您可以将labels
属性与相应的 dict 和node_color
属性与相应的列表一起使用。对于此代码:
G = nx.Graph()
G.add_node(0, weight=8)
G.add_node(1, weight=5)
G.add_node(2, weight=3)
labels = {n: G.nodes[n]['weight'] for n in G.nodes}
colors = [G.nodes[n]['weight'] for n in G.nodes]
nx.draw(G, with_labels=True, labels=labels, node_color=colors)
Networkx 将绘制:
如果你想同时绘制节点 ID 和它的权重,你可以这样写:
labels = {n: str(n) + '; ' + str(G.nodes[n]['weight']) for n in G.nodes}
如果您在节点中缺少weight
属性并想要绘制它们,您可以使用以下代码:
labels = {
n: str(n) + '\nweight=' + str(G.nodes[n]['weight']) if 'weight' in G.nodes[n] else str(n)
for n in G.nodes
}
我认为在不同颜色的节点附近绘制权重几乎是不可能的。这是我能给你的最好建议。
推荐阅读
- java - 使用 getEntryAfterMiss(ThreadLocal.java:444) 是否可能消耗大量 CPU
- javascript - 在浏览器中禁用右键单击是否有任何实际合法用途?
- python - 在python目录中附加文件名和字符串的一部分
- c - 如何在 VSCODE 中自动链接所有 C 文件?
- java - JPA:忽略 Fetch 上的字段,但在保存时全部保存。是否有任何注释属性可以这样做?
- typescript - 基于参数的变量的动态返回
- php - 我只想在第一次运行 foreach 时回显某些内容
- python - 从 sqlite3 填充组合框可编辑用户名和行编辑密码
- api - 使用 CodeBird API 分享 Twitter 视频
- ibm-cloud - 使用 IBM Cloud Object Storage CLI 对存储桶发出获取请求时出现 403 错误