微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更新同一图中绘制的网络图并根据节点度数更改节点颜色

如何解决更新同一图中绘制的网络图并根据节点度数更改节点颜色

我正在尝试每 5-7 秒更新一次绘图。所以我尝试了 matplotlib 来刷新绘图图。但是通过使用这个,同一个图形一次又一次地绘制。

为了更好地理解 - 我有两个文件一个用于创建节点,使用另一个程序每 10 秒更改一次,另一个是静态的边创建。从这个文件试图创建一个像这样动态的图表 - https://drive.google.com/file/d/1snFITs4jvW5H8JSF-3pqFE2F1XjX88PD/view?usp=sharing

我的网络代码是 -

fig = plt.figure()
net = fig.add_subplot(111)


def update(it):
    with open('node.csv','r') as nodecsv: 
        nodereader = csv.reader(nodecsv)
        nodes = [n for n in nodereader][1:]
        node_names = [n[0] for n in nodes]


    with open('edge.csv','r') as edgecsv:
        edgereader = csv.reader(edgecsv) 
        edges = [tuple(e) for e in edgereader][1:] 
  
    g = nx.Graph()
    g.add_nodes_from(node_names)
    g.add_edges_from(edges)
    print(nx.info(g))


# * ******************** Node Color Part **************************** *

    nx.draw(g,pos=pos,node_size=node_size,node_color=color,linewidths=2,**options)

ani = animation.FuncAnimation(fig,update,interval=1000)
plt.show()

另一件事是,我试图根据正在工作的节点属性应用节点颜色,但也根据节点度数表示如果节点属性颜色为蓝色,则分别应用蓝色度数。如果是绿色,则在绿色中单独应用度数,依此类推。 我的节点颜色代码 -

node_status = {}
for node in nodes:
    node_status[node[0]] = node[1]

nx.set_node_attributes(g,node_status,'node_status')
color = []
for n in g.nodes():
    #print(n,g.nodes[n]['node_status'])
    if g.nodes[n]['node_status'] == 'A': color.append("blue")
    if g.nodes[n]['node_status'] == 'B': color.append("yellow")
    if g.nodes[n]['node_status'] == 'C': color.append("red")
    if g.nodes[n]['node_status'] == 'D': color.append("green")
    if g.nodes[n]['node_status'] == 'E': color.append("pink")


betCent = nx.betweenness_centrality(g,normalized=True,endpoints=True)
#node_color = [20000.0 * g.degree(v) for v in g]
node_size =  [v * 10000 for v in betCent.values()]

提前致谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。