【问题标题】:Networkx is plotting different graph each timeNetworkx 每次都在绘制不同的图表
【发布时间】:2021-09-24 15:22:49
【问题描述】:

我想用Networkx lib 绘制我的网络图。 这是我的代码:

import networkx as nx

analysis_graph = nx.Graph()

node_list = ["A", "B", "C", "D", "E", "F"]

analysis_graph.add_nodes_from(node_list)
#print(analysis_graph.nodes())

nx.draw(analysis_graph, with_labels = True)
relation_list = [['A', 'B'],
                 ['A', 'C'],
                 ['B', 'D'],
                 ['C', 'E'],
                 ['D', 'F'],
                 ['E', 'D'],
                 ['C', 'E'],
                 ['B', 'D'],                 
                 ['C', 'F'],
                 ['A', 'E'],
                 ['B', 'C'],                 
                 ['B', 'F'],
                 ['D', 'A']]

analysis_graph = nx.from_edgelist(relation_list)
print(nx.info(analysis_graph))
nx.draw(analysis_graph, with_labels = True)

我的代码有效,但每次运行时,它都会绘制不同的图表。 有没有办法每次都画一样的?

【问题讨论】:

    标签: python plot networkx


    【解决方案1】:

    两个想法:

    如果你在同一个 Python 调用中连续两次调用 draw() 会有什么不同吗?您使用的是哪个 Python 版本?我想知道您是否使用 Python

    要研究的另一件事是 networkx 如何在绘图中使用随机性。您可能需要播种随机数生成器:

    https://github.com/networkx/networkx/blob/ead0e65bda59862e329f2e6f1da47919c6b07ca9/doc/reference/randomness.rst

    【讨论】:

    • 我使用 Python 3.8
    • 你能告诉我如何在我的代码中实现随机数,以便我总是得到相同的图表吗?
    • 看看stackoverflow.com/questions/49425881/… 基本上加random.seed(42); np.random.seed(42)
    【解决方案2】:
    analysis_graph.add_edges_from(relation_list)
    
    dict_of_node_sizes = dict(analysis_graph.degree) # for getting node sizes
    #print(d)
    my_pos = nx.spring_layout(analysis_graph, seed = 0) # for giving same graph each time
    
    print(nx.info(analysis_graph))
    plt.figure(figsize=(25,17))
    nx.draw(analysis_graph, pos = my_pos, with_labels = True, node_size=[v * 100 for v in dict_of_node_sizes.values()])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-13
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      相关资源
      最近更新 更多