使用python创建带权重的路径图

2024-04-18 15:46:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个基于路径列表的边上带有权重的图。你知道吗

示例数据为:

paths = [['home', 'bus stop', 'work'], ['home', 'shop', 'work'],
['home', 'shop', 'bus stop', 'work'], ['home', 'work'], ['home', 'bus stop']]

我需要得到一个加权图或流程图如下:

Have no enough rating, so here is a link

问题是节点和路径的数量相当大,因此手动绘制确实不太令人愉快。你知道吗


Tags: 数据路径示例home列表数量节点手动
1条回答
网友
1楼 · 发布于 2024-04-18 15:46:05

对于这个案例,我提出了一个简单的解决方案。你知道吗

from graphviz import Graph
paths = [['home', 'bus stop', 'work'], ['home', 'shop', 'work'],
         ['home', 'shop', 'bus stop', 'work'], ['home', 'work'], ['home', 'bus stop']]
path_count = len(paths)
all_nodes = set()
path_weights = {}
for path in paths:
    path.append(path[-1] + '_end')
    all_nodes = all_nodes | set(path)
    for i in range(len(path) - 1):
        if len(path) > 1:
            if path[i] + '->' + path[i+1] in path_weights:
                path_weights[path[i] + '->' + path[i+1]] += 1
            else:
                path_weights[path[i] + '->' + path[i+1]] = 1
g = Graph('G', filename='process.gv')
for key, value in path_weights.items():
    splitted = key.split('->')
    g.edge(splitted[0], splitted[1], label = str(round((value/path_count*100), 2)) + '%')

g.view()

它画了一个非常简单的图no rating so just a link

谢谢大家。你知道吗

相关问题 更多 >