python - Networkx 图形绘制节点权重

标签 python python-3.x matplotlib graph networkx

我想为无向图中的每个节点分配节点权重。我使用以下 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()

然后我有一个如下形式的图: enter image description here

我想绘制一个图表,其中节点旁边的权重以新颜色给出,例如: enter image description here

实现这一点的最简单方法是什么?在 SO 上, Material 主要用于边缘权重,或改变节点大小。节点权重。

最佳答案

您可以将 labels 属性与相应的字典一起使用,将 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 将绘制:

enter image description here

如果你想同时绘制节点ID和权重,你可以这样写:

标签 = {n: str(n) + '; ' + str(G.nodes[n]['weight']) for G.nodes 中的 n}

<小时/>

如果节点中缺少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
}

我认为在附近具有不同颜色的节点绘制权重几乎是不可能的。这是我能给你的最好建议。

关于python - Networkx 图形绘制节点权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56294715/

相关文章:

python - 在字符串格式中,我一次只能替换一个参数吗?

python - Docker:无法从“azure.storage.blob”导入名称 'BlobServiceClient'

Python 制表

python - 在 matplotlib bar_label 中隐藏小于 n 的条形标签

python - 如何查找图像中的多个条形码

python-3.x - Python3 deepcopy 的备忘录和 nil 参数的文档不完整和/或循环?

Python:分离模块中的异常工作错误

python - 在同一张图上绘制两个直方图,并使它们的列总和为 100

python - 如何在瓷砖周围创建带有框架的 seaborn.heatmap()?

python - 设置颜色条以显示 matplotlib 中数据范围之外的值