图数据可视化

问题描述 投票:0回答:1

我需要可视化图形,其中由逗号连接的每对节点代表一条边,而数值代表该边的强度。例如,('A', 'B'): 0.71 表示节点 A 以 0.71 的边缘强度连接到节点 B。现在,我需要用 python 可视化这些图。这是图表数据。

图1

('A', 'B'): 0.71
('M', 'B'): 0.67
('N', 'B'): 0.64
('A', 'O'): 0.62
('O', 'B'): 0.60
('N', 'O'): 0.53
('M', 'O'): 0.46
('A', 'N'): 0.18
('M', 'N'): 0.11

图2

('ABC', 'ADC'): 0.53

图3

('CDE', 'CFH'): 0.28

图4

('GHI', 'GMI'): 0.20

图5

('XYZ', 'XWZ'): 0.17

谁能帮我清楚地可视化这些图表?

python python-3.x matplotlib graph
1个回答
0
投票

只需使用

networkx

import networkx as nx

data = {
    ('A', 'B'): 0.71,
    ('M', 'B'): 0.67,
    ('N', 'B'): 0.64,
    ('A', 'O'): 0.62,
    ('O', 'B'): 0.60,
    ('N', 'O'): 0.53,
    ('M', 'O'): 0.46,
    ('A', 'N'): 0.18,
    ('M', 'N'): 0.11
}

从您的数据集创建图表:

G = nx.Graph()
for key, value in data.items():
    G.add_edge(*key, weight=value)

并根据需要渲染组件:

pos = nx.spring_layout(G, seed=123456)
nx.draw_networkx_nodes(G, pos)
nx.draw_networkx_edges(G, pos)
nx.draw_networkx_labels(G, pos, font_size=12)
nx.draw_networkx_edge_labels(G, pos, nx.get_edge_attributes(G, "weight"))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.