【问题标题】:How to create a network diagram on Python, given an adjacency matrix给定邻接矩阵,如何在 Python 上创建网络图
【发布时间】:2020-04-23 12:51:12
【问题描述】:

image of objective

您将如何使用 Python 中的邻接矩阵 (pandas dtaframe) 创建一个清晰的网络图。

我尝试过“networkx”,但似乎相当复杂且难以自定义。有没有更简单的程序,用于我在附件1 中描述的目标。

目标是制作一张图表,显示制造流程中哪些机器相互供应?

感谢您的帮助!谢谢!

【问题讨论】:

  • 你的邻接矩阵是什么格式的?熊猫数据框?一个 NumPy 数组?
  • 建议在 Stack Overflow 上是题外话,但我很确定你可以找到 this kind of graphs 的 Python 包。
  • 我曾经用过G=nx.from_numpy_matrix(adjacency_matrix, create_using=nx.DiGraph())

标签: python networkx


【解决方案1】:

Networkx 足以完成您的任务。您可以轻松地创建和保存图表。这是一个简单的例子:

import networkx as nx
import matplotlib.pyplot as plt

graph = nx.DiGraph()
graph.add_weighted_edges_from([("Tool", "A", 80), ("A", "Tool", 100), ("B", "Tool", 50), ("Tool", "C", 2000)])
nx.draw(graph, with_labels=True, font_weight='normal')
plt.savefig("your_graph.png")

目前这个例子不显示边缘和弯曲箭头的重量,但我确信它是可配置的。如需更多信息,请查看documentation。希望我的回答能圆满

【讨论】:

  • 这太棒了!谢谢内斯托。一个问题 - 您如何将 .csv 矩阵转换为您在此处给出的形式:graph.add_weighted_edges_from([("Tool", "A", 80), ("A", "Tool", 100), ("B", "Tool", 50), ("Tool", "C", 2000)])
  • 内置了用于处理 csv 的模块。您可能需要创建一个循环,在每次迭代中添加新边。
猜你喜欢
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 2018-07-23
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
相关资源
最近更新 更多