从下面的凹凸矩阵开始,我想使用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表示该 node 未连接到其他 node
  • 1表示该 node 连接到另一个 node
  • 2表示该 node 有一个指向另一个 node 的传出箭头(例如,1-->6)

问题是我能够绘制有向图或无向图,但不能同时绘制这两种图.

谢谢你的帮助

推荐答案

#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)

graph

这样,无向边就是双向连接.我认为没有其他方法可以在networkx中实现图形,因为不允许使用混合图形,如下所述:

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

-MixedGraph and MixedMultiGraph

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

Python相关问答推荐

pandas MultiIndex是SQL复合索引的对应物吗?

Python(Polars):使用之前的变量确定当前解决方案的Vector化操作

从收件箱获取特定列中的重复行

如何将自动创建的代码转换为类而不是字符串?

从今天起的future 12个月内使用Python迭代

Python:在类对象内的字典中更改所有键的索引,而不是仅更改一个键

提取两行之间的标题的常规表达

如何在图片中找到这个化学测试条?OpenCV精明边缘检测不会绘制边界框

pandas DataFrame GroupBy.diff函数的意外输出

如何使用symy打印方程?

Polars LazyFrame在收集后未返回指定的模式顺序

如何在Python脚本中附加一个Google tab(已经打开)

如果条件不满足,我如何获得掩码的第一个索引并获得None?

在Python中,从给定范围内的数组中提取索引组列表的更有效方法

Python导入某些库时非法指令(核心转储)(beautifulsoup4."" yfinance)

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

以逻辑方式获取自己的pyproject.toml依赖项

重置PD帧中的值

ConversationalRetrivalChain引发键错误

(Python/Pandas)基于列中非缺失值的子集DataFrame