74032


以下のページを参考にノードの色のα値を変化させたものをGIFにしたいのですが、うまくいきません。

[Using NetworkX with matplotlib.ArtistAnimation - Stack
Overflow](https://stackoverflow.com/questions/18229563/using-networkx-with-
matplotlib-artistanimation)

[code]

    import numpy as np
    import networkx as nx
    import matplotlib
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation
    
    G = nx.Graph()
    G.add_edges_from([(0,1),(1,2),(2,0)])
    fig = plt.figure(figsize=(8,8))
    pos= {0: (3, 3), 
            1: (2, 2), 2: (4, 2)}
    nc = np.random.random(3)
    nodes = nx.draw_networkx_nodes(G,pos)
    edges = nx.draw_networkx_edges(G,pos) 
    
    def update(n):
        random.seed(1)
        nc = np.random.random(3) #ここがうまくいきません。
        nodes.set_array(nc) #ここの処理が？
        return nodes,
    
    anim = FuncAnimation(fig, update, interval=50, blit=True)
    
[/code]

例えば、縦がノード数、横がRGB+アルファ値の行列が与えられた場合、この４番目のアルファ値だけを時間ごとに変化させたいのです。

[code]

    nc = [[0.13436424, 0.84743374, 0.76377462, 0.38538581],
          [0.25506903, 0.49543509, 0.44949106, 0.00395534],
          [0.65159297, 0.78872335, 0.09385959, 0.00395534]]
        nx.draw(G,pos,node_color=nc)
    
[/code]

その場合、nodes.set_array(nc) の処理がよくわからないのですが、どのように書けば良いのでしょうかご教授願います。よろしくお願いいたします。


CC BY-SA 4.0
2021-02-09T17:52:51.997
73898
2021-02-16T03:40:54.007
2021-02-10T01:56:16.783
3060
29111
question
python python3 networkx
NetworkX ノードのα値を連続的に変化させ、動画を作成したい


アルファ値が時間経過とともにどのように変化するのかわからないのですが、ここではランダムに変化するものとしました。

[code]

    import numpy as np
    import networkx as nx
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation
    
    G = nx.Graph()
    G.add_edges_from([(0,1),(1,2),(2,0)])
    pos= {0:(3,3), 1:(2,2), 2:(4,2)}
    
    nc = [[0.13436424, 0.84743374, 0.76377462, 0.38538581],
          [0.25506903, 0.49543509, 0.44949106, 0.00395534],
          [0.65159297, 0.78872335, 0.09385959, 0.00395534]]
    
    fig, ax = plt.subplots(figsize=(8,8))
    
    def update(n):
      ax.clear()
      nc[0][3] = np.random.random(1)[0]
      nc[1][3] = np.random.random(1)[0]
      nc[2][3] = np.random.random(1)[0]
      nodes = nx.draw_networkx_nodes(G, pos, node_color=nc, ax=ax)
      edges = nx.draw_networkx_edges(G, pos, ax=ax)
    
    anim = FuncAnimation(fig, update, interval=250)
    #anim.save('animation.gif', writer='pillow')
    plt.show()
    
[/code]


CC BY-SA 4.0
2021-02-16T03:40:54.007
74032
2021-02-16T03:40:54.007
43816
73898
answer