Python 网络 x : Add duplicate or equal nodes to a tree/graph?

标签 python graph networkx quantitative-finance

我正在使用 Networkx 中的有向图,我需要将其“拆分”为两部分。该图表示一个重组三叉树,在构建它之后我需要对节点上的值进行一些计算。

我的问题是我正在处理一个应用程序,它要求我检查一个节点并“拆分”树。我需要有重复的节点值,因为它们在图表上的位置对我来说很重要,而不是节点本身的值。注意:重新命名节点(即将节点 10 更改为 10a)是不可行的,因为稍后我必须对这些数字进行计算。

举个例子:

     80 
      |
     100
   /  |  \
 50  100  150

最后我需要:

          80 
       /      \    
      100      100
    /  |        |
  50  100      150

有没有办法在不重命名节点的情况下做到这一点???谢谢!

最佳答案

您能为节点添加值吗?一定程度的重组可能是不可避免的。 value 可以是任何东西,这样您就可以保留已有的节点并区分它们...

import matplotlib.pyplot as plt
import networkx as nx

G=nx.DiGraph()
G.add_node(1,value=80)
G.add_node(2,value=100)
G.add_node(3,value=50)
G.add_node(4,value=100)
G.add_node(5,value=150)
G.add_node(6,value=100)
G.add_node(7)
G.add_node(8)
G.add_edges_from([(1,2),(2,3),(2,4),(1,6),(6,5)])

# change the value of nodes
for i in G:
    if 'value' in G.node[i]:
        # do something?
        continue
    else:
        G.node[i]['value']=200


labels={}
for i in G:
    labels[i]=G.node[i]['value']
pos=nx.circular_layout(G)

nx.draw_circular(G,node_size=1000,node_color='r',node_shape='s',with_labels=False)
nx.draw_networkx_labels(G,pos,labels,font_size=12)
plt.show()

关于Python 网络 x : Add duplicate or equal nodes to a tree/graph?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19583505/

相关文章:

python - 无向图上的networkx pagerank?

python构建带注释的图形

python - 计算矩阵的零空间

algorithm - 修改 BFS/DFS 以检查简单路径

java - 有向图中的欧拉循环问题

algorithm - 使用 Maximum Flow 为人们分配工作,更难的版本

Pandas:大对节点之间的最短路径长度

python - 为什么 go build 找不到 Py_None?

python - 如何使用给定的装饰器获取python类的所有方法

python - Django 组选项列表