[英]From Matrix to Graph (directed and undirected) using networkx
从以下颠簸矩阵开始,我想使用 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]])
在哪里:
问题是我能够绘制有向图或无向图,但不能同时绘制两者。
谢谢你的帮助
#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
中实现您的图,因为不允许使用混合图,如此处所述:
- 是否可以将无向和有向边添加到 networkx 中的图形对象
- MixedGraph 和 MixedMultiGraph
我能想象的唯一其他解决方案是构建有向图和单独的无向图,但这完全取决于您的目标是什么以及该图的用途。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.