73471


pythonのnetworkxを使って指定した座標でノードをプロットしようとしているのですが、うまくいきません。エッジを指定しないとうまくいかないのですが解決策はないでしょうか。

[code]

    import networkx as nx
    n = 18
    G = nx.DiGraph()
    G.add_node(n-1)
    pos = { 0: (0, 8),  
             1: (0, 7),  
             2: (0, 6), 
             3: (0, 5),   9: (1, 5),  12: (2, 5), 15:(3, 5),           
             4: (0, 4),  10: (1, 4),  13: (2, 4), 16:(3, 4),
             5: (0, 3),  11: (1, 3),  14: (2, 3), 17:(3, 3),
             6: (0, 2),
             7: (0, 1),
             8: (0, 0),  }
    nx.draw(G, pos)
    #nx.draw_networkx_nodes(G, pos)
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/3KofT.png)](https://i.stack.imgur.com/3KofT.png)


CC BY-SA 4.0
2021-01-21T07:45:02.540
73465
2021-02-10T02:10:37.847
2021-02-10T02:10:37.847
3060
29111
question
python python3 networkx
networkxのノードが表示されない


`G.add_node(n-1)`だけが行われていて、それでは`17`のノードが1つだけ存在する状態ではないでしょうか？  
そのために１個だけ表示されるのでしょう。

例えば`G.add_node(n-1)`の代わりに以下のいずれかで18個のノードを作っておけば良いと思われます。

ループで順次作って登録する：

[code]

    for i in range(n):
        G.add_node(i)
    
[/code]

リストを作って登録する：

[code]

    nodes = [i for i in range(n)]
    G.add_nodes_from(nodes)
    
[/code]


CC BY-SA 4.0
2021-01-21T11:03:07.600
73470
2021-01-21T11:03:07.600
26370
73465
answer


辞書(dict)型インスタンスの `pos` からキーを拾ってグラフに追加すればよろしいのではないでしょうか。

[code]

    import networkx as nx
    import matplotlib.pyplot as plt
    
    G = nx.DiGraph()
    pos = {
       0: (0, 8),  
       1: (0, 7),  
       2: (0, 6), 
       3: (0, 5),   9: (1, 5),  12: (2, 5), 15:(3, 5),           
       4: (0, 4),  10: (1, 4),  13: (2, 4), 16:(3, 4),
       5: (0, 3),  11: (1, 3),  14: (2, 3), 17:(3, 3),
       6: (0, 2),
       7: (0, 1),
       8: (0, 0),
    }
    
    G.add_nodes_from(pos.keys())
    nx.draw(G, pos)
    plt.show()
    
[/code]

[![18個のノード](https://i.stack.imgur.com/AUCnX.png)](https://i.stack.imgur.com/AUCnX.png)


CC BY-SA 4.0
2021-01-21T11:31:20.473
73471
2021-01-21T11:31:20.473
73465
answer