【问题标题】:From Matrix to Graph (directed and undirected) using networkx使用networkx从矩阵到图(有向和无向)
【发布时间】:2022-06-10 18:31:58
【问题描述】:

从以下颠簸矩阵开始,我想使用 python 库 Networkx 创建一个图形

matrix([[0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0],
        [2, 0, 0, 0, 0, 0, 0, 1],
        [0, 0, 0, 0, 0, 1, 0, 0],
        [0, 0, 0, 0, 0, 0, 2, 1],
        [0, 0, 0, 1, 0, 0, 2, 0],
        [2, 2, 0, 0, 0, 0, 0, 0],
        [0, 0, 1, 0, 1, 0, 0, 0]])

地点:

  • 0 表示该节点未连接到另一个节点
  • 1表示该节点连接到另一个节点
  • 2 表示该节点有一个指向另一个节点的出箭头(例如,1 --> 6)

问题是我可以绘制有向图或无向图,但不能同时绘制两者。

感谢您的帮助

【问题讨论】:

  • 我们可以假设1表示两个节点之间的双向连接吗?

标签: python numpy networkx


【解决方案1】:
#libraries
import networkx as nx
import numpy as np

#input
X = np.array([[0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0],
        [2, 0, 0, 0, 0, 0, 0, 1],
        [0, 0, 0, 0, 0, 1, 0, 0],
        [0, 0, 0, 0, 0, 0, 2, 1],
        [0, 0, 0, 1, 0, 0, 2, 0],
        [2, 2, 0, 0, 0, 0, 0, 0],
        [0, 0, 1, 0, 1, 0, 0, 0]])


G = nx.DiGraph(X>0)
nx.draw_kamada_kawai(G, with_labels=True)

这样你就有了无向边是双向连接的。我认为没有其他方法可以在networkx 中实现您的图表,因为不允许使用混合图表,如此处所述:

-Is it possible to add undirected and directed edges to a graph object in networkx

-MixedGraph and MixedMultiGraph

我能想象的唯一其他解决方案是构建一个有向图和一个无向图,但这完全取决于您的目标是什么以及该图的用途。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    相关资源
    最近更新 更多