NetworkX圆形布局增加了节点间距和自定义定位



我正在NetworkX上处理圆形布局图。我想:

  1. 增加节点之间的间距。我改变了比例,但节点间距似乎没有变化
pos = nx.circular_layout(G, scale=2)
  1. 将特定节点并排放置在圆中(所有节点的标签不同(

感谢您的帮助!

问题的第二部分是比较容易的部分。由于circular_layout返回的pos只是dict,因此可以简单地使用以下值:

import networkx as nx
import matplotlib.pylab as pl
import random
g = nx.karate_club_graph()
pos = nx.circular_layout(g, )
node_order = list(g.nodes)
random.shuffle(node_order)
changed_pos = dict(zip(node_order, [pos[node] for node in g]))

scale参数的第一部分有点棘手,缩放参数有影响,但可能不是你想要的:

pos = nx.circular_layout(g)
nx.draw(g, pos)
print(pl.gca().get_xlim())
# (-1.1, 1.1)
pl.show()

pos = nx.circular_layout(g, scale=200)
nx.draw(g, pos)
print(pl.gca().get_xlim())
# (-220.0, 220.0)
pl.show()
# same figure as above

正如在这个回答中所解释的;节点大小以显示坐标给出,而节点位置以数据坐标"给出;。(如果你想在这个答案中引用netgraph,这可能会对你有所帮助,但我没有使用这个软件包的经验。(

要更改节点之间的空间,可以增加图形大小或减小节点大小:

pos = nx.circular_layout(g)
nx.draw(g, pos, node_size=10)
pl.show()
pl.figure(figsize=(20,20))
nx.draw(g, pos)
pl.show()

最新更新