import networkx as nx
%matplotlib inline
import matplotlib.pyplot as plt
G2=nx.DiGraph()
G2.add_node(900,pos=(0,0))
G2.add_node(901,pos=(1,0))
G2.add_node(902,pos=(0,1))
G2.add_node(903,pos=(1,1))
G2.add_node(904,pos=(0,-1))
nodePos = nx.circular_layout(G2)
print("nodePos : \n" , nodePos)
nx.draw_networkx(G2, with_labels = True)
plt.show()
上面的代码创建带有节点位置的下图:
nodePos:
{900:数组([1.,0.]),901:数组([0.30901699,0.95105652]),902:数组([-0.80901699,0.58778525]),903:数组([-0.80901699,-0.58778525 ]),904:数组([0.30901699,-0.95105652])}
问题:
a)节点900的位置为0、0,但此节点的x似乎大于0.8 ...类似地,904的y被指定为-1,但是坐标系在任何地方都没有显示-1。
b)nx.circular_layout()应该返回节点的位置,这就是我在nodePos中打印的内容。但是,我不理解nodePos中打印的值。为什么我看到十进制值,也看到负值。
c)我的目的是获取节点的正确位置,以便可以使用它并最终在Qt / Java等环境中绘制图形。...
答案 0 :(得分:1)
您需要为pos
图添加nx.draw_networkx
参数,像这样
import networkx as nx
%matplotlib inline
import matplotlib.pyplot as plt
G2=nx.DiGraph()
G2.add_node(900,pos=(0,0))
G2.add_node(901,pos=(1,0))
G2.add_node(902,pos=(0,1))
G2.add_node(903,pos=(1,1))
G2.add_node(904,pos=(0,-1))
nodePos = nx.circular_layout(G2)
print("nodePos : \n" , nodePos)
#('nodePos : \n', {904: array([1.00000000e+00, 2.38418583e-08]),
# 900: array([0.30901696, 0.95105658]), 901: array([-0.80901709, 0.58778522]),
# 902: array([-0.80901698, -0.58778535]), 903: array([ 0.30901711, -0.95105647])})
nx.draw_networkx(G2, with_labels = True,pos=nodePos)
plt.show()
您可以阅读pos
争论here的文档,其中指出
pos(字典,可选的)–字典,其中节点作为键,位置作为值。如果未指定,将计算弹簧布局位置。