【问题标题】:Creating a path graph with weights using python使用python创建带有权重的路径图
【发布时间】:2018-08-15 11:33:49
【问题描述】:

我正在尝试根据路径列表创建一个边缘权重的图表。

示例数据为:

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

我需要这样的加权图或流程图:

问题是节点和路径的数量相当大,所以手动绘制真的很不爽。

【问题讨论】:

  • 你有教程吗?并显示你已经完成的代码
  • 不完全确定您在寻找什么,但不妨看看这个问题:stackoverflow.com/questions/4468364/…
  • @NamsuKhan 我没有遵循任何教程,因为我没有找到任何教程。呈现的图表是手动绘制的。

标签: python python-3.x graph flowchart


【解决方案1】:

对于这种情况,我做了一个简单的解决方案。

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

谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    相关资源
    最近更新 更多