我正在尝试在NetworkX中绘制图形。该网络连接30个节点和大约130个边缘。使用权重矩阵设置节点
A = [
[0, 1.51, 0, 1.71, 0],
[0, 0, 2.11, 1.81, 2.31],
[0, 0, 0, 1.31, 1.41],
[0, 0, 0, 0, 1.11],
[0, 0, 0, 0, 0]]
如何从列表中将节点的名称分配给矩阵("A1", "K2", ... "Z30")
?到目前为止,我只能为数字分配名称。
import matplotlib.pyplot as plt
import networkx as nx
import numpy as np
A = [[0, 1.51, 0, 1.71, 0],
[0, 0, 2.11, 1.81, 2.31],
[0, 0, 0, 1.31, 1.41],
[0, 0, 0, 0, 1.11],
[0, 0, 0, 0, 0]]
G = nx.from_numpy_matrix(np.matrix(A), create_using=nx.DiGraph)
layout = nx.spring_layout(G)
labels = nx.get_edge_attributes(G, "weight")
lab_node = dict((i, str(i)*3) for i in range(5))
nx.draw(G, layout)
nx.draw_networkx_nodes(G, layout, node_size=500)
nx.draw_networkx_edge_labels(G, layout, edge_labels=labels)
nx.draw_networkx_labels(G, layout, labels=lab_node, font_size=10, font_family='sans-serif')
plt.show()
作为一个简单的解决方法,您可以将邻接矩阵A
转换为熊猫DataFrame,其列/索引是所需的标签:
import pandas as pd
import networkx as nx
A = [
[0, 1.51, 0, 1.71, 0],
[0, 0, 2.11, 1.81, 2.31],
[0, 0, 0, 1.31, 1.41],
[0, 0, 0, 0, 1.11],
[0, 0, 0, 0, 0]]
labels = ['alice', 'bob', 'charlie', 'dan', 'ellie']
要创建DataFrame:
A2 = pd.DataFrame(A, index=labels, columns=labels)
通过绘制结果来检查结果,没有其他标签设置(表明我们已经正确设置了结果):
nx.draw_networkx(nx.from_pandas_adjacency(A2))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句