我是networkX的新手,我正试图找到一种方法,这样我就可以根据表示Y轴上的值的值来定位节点,而不会更改使树看起来很好的节点的随机X值
使用这些节点:
import networkx as nx
import matplotlib.pyplot as plt
G=nx.Graph()
G.add_node(430, value = 1)
G.add_node(230, value = -1)
G.add_node(220, value = 0)
G.add_node(210, value = -1)
G.add_node(10, value = 1)
G.add_edge(430,220)
G.add_edge(10,220)
G.add_edge(210,220)
G.add_edge(230,220)
nx.draw_networkx(G)
plt.show()
结果应该是" X"每次运行代码
时,所有5个节点都在这些特定的3个y值上答案 0 :(得分:0)
我不确定这个想法是否适合你,但你应该能够通过以下方式实现这一目标:
以下是一个例子:
import networkx as nx
import matplotlib.pyplot as plt
G=nx.Graph()
G.add_node(430, value = 1)
G.add_node(230, value = -1)
G.add_node(220, value = 0)
G.add_node(210, value = -1)
G.add_node(10, value = 1)
G.add_edge(430,220)
G.add_edge(10,220)
G.add_edge(210,220)
G.add_edge(230,220)
pos=nx.spring_layout(G) # default layout like in your code
other_y = nx.get_node_attributes(G, 'value')
for node, node_pos in pos.items():
if node in other_y.keys():
pos_ = pos[node]
pos_[1] = other_y[node]
pos[node] = pos_
f, arr = plt.subplots(2)
nx.draw_networkx(G, ax=arr[0])
arr[0].set_title('default layout')
nx.draw_networkx(G, pos=pos, ax=arr[1])
arr[1].set_title('partially y-modified')
plt.show()
输出(警告:可能针对python 3进行了调整):