python - 是否可以在 Networkx 图中混合不同形状的节点?

标签 python nodes networkx edges

我有一个包含两种不同类型节点的 XML 文件(我们将其称为节点“a”和节点“b”)。它们是相连的。我想将节点“a”表示为正方形,将节点“b”表示为圆形。这在networkx和Python中可能吗?

我最初的计划是声明两个图:

AG=nx.DiGraph()
BG=nx.DiGraph()

然后根据节点的类型向每个节点添加节点 - 因此我将迭代 XML,如果节点是“a 类型”,则将其添加到 AG 并如果是 B 型,则将其添加到BG

现在我可以显示每个图表并定义其形状 - 通常:

nx.draw_networkx(EG, font_family="Arial", font_size=10,
                 node_size=2000, node_shape="s", node_color='r', labels=node_labels, with_labels=True)

它崩溃的部分是当我尝试在“a”节点和“b”节点之间添加边时。

关于如何运作有什么想法吗?

最佳答案

将整个数据集保留在一个图中:

G = nx.DiGraph()

还保留 A_nodes 和 B_nodes 的列表。然后你可以使用

选择 G 的子图
AG = G.subgraph(A_nodes)
BG = G.subgraph(B_nodes)

由于所有节点都在 G 中,因此您现在可以在 A 节点和 B 节点之间添加边:

G.add_edge(a_node, b_node)

关于python - 是否可以在 Networkx 图中混合不同形状的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44801216/

相关文章:

python - 为什么我画图遇到除零错误?

python - 将包含多行字符串的 Pandas 系列行拆分为单独的行

python - 出现 "string index out of range"错误

python - networkx - 以 block 的形式读取边缘列表(pandas)

xml - Xpath,为什么两者都匹配?

delphi - 设置虚拟树中的节点状态

networkx - 查找深度为 2 Networkx 的所有子图

python boto3 附加/替换 IAM 角色到 ec2

python - Databricks - Pyspark - 使用动态键处理嵌套的 json

ios - 使用touchesBegan方法从节点获取对象的引用