Анимация

У меня есть макет весны networkx, который представляет топологию сети. Ключевые узлы имеют цвет как красный, а другой – синий. Маршруты к краям ключевых узлов обозначены тире. Как я могу оживить чертеж краев сети с заданным интервалом времени?

#!/usr/bin/env python import matplotlib.pyplot as plt import networkx as nx import matplotlib as mpl G=nx.Graph() G.add_edge('a','b',weight=0.6) G.add_edge('a','c',weight=0.2) G.add_edge('c','d',weight=0.1) G.add_edge('c','e',weight=0.7) G.add_edge('c','f',weight=0.9) G.add_edge('a','d',weight=0.3) elarge=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] >0.5] esmall=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] <=0.5] #specify an initial position that is not random eg use a circular layout pos=nx.circular_layout(G) pos=nx.spring_layout(G,dim=2,pos=pos) # positions for all nodes #pos=nx.spring_layout(G) # positions for all nodes print "Graph xy positions" print pos # nodes nx.draw_networkx_nodes(G,pos,node_size=700) # edges nx.draw_networkx_edges(G,pos,edgelist=elarge, width=6) nx.draw_networkx_edges(G,pos,edgelist=esmall, width=6,alpha=0.5,edge_color='b',style='dashed') # labels nx.draw_networkx_labels(G,pos,font_size=20,font_family='sans-serif') plt.xlim(-0.05,1.05) plt.ylim(-0.05,1.05) plt.axis('off') 

  • Как я могу использовать functools.singledispatch с методами экземпляра?
  • При попытке импортировать модуль с тем же именем, что и встроенный модуль, возникает ошибка импорта
  • Python: объект не поддерживает индексирование
  • python re: return True, если регулярное выражение содержит строку
  • python: получить вывод печати в инструкции exec
  • Опциональный аргумент декоратора Python
  • как мы можем познакомиться с выбранными и опущенными именами (столбцами) объектов (столбцов), используя scikit-learn
  • django- why после перенаправления, дисплей формы «Нет»
  • 3 Solutions collect form web for “Анимация”

    Попробуйте модуль animation . Также см. Этот удивительный учебник , Matplotlib оживить изображение ,

    Здесь, что я сделал, вы можете использовать plt.figure (), чтобы получить экземпляр фигуры и приклеить ее к холсту, а затем добавить холст к панели, используя, например, vbox:

     import matplotlib.pyplot as plt import networkx as nx import wx from matplotlib.backends.backend_wxagg import \ FigureCanvasWxAgg as FigCanvas, \ NavigationToolbar2WxAgg as NavigationToolbar class NetworkFrame(wx.Frame): def __init__(self): wx.Frame.__init__(self, None, -1) self.panel = wx.Panel(self) self.fig = plt.figure() self.canvas = FigCanvas(self.panel, -1, self.fig) G=nx.house_graph() pos={0:(0,0), 1:(1,0), 2:(0,1), 3:(1,1), 4:(0.5,2.0)} nx.draw_networkx_nodes(G,pos,node_size=2000,nodelist=[4]) nx.draw_networkx_nodes(G,pos,node_size=3000,nodelist=[0,1,2,3],node_color='b') nx.draw_networkx_edges(G,pos,alpha=0.5,width=6) plt.axis('off') self.vbox = wx.BoxSizer(wx.VERTICAL) self.vbox.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW) self.toolbar = NavigationToolbar(self.canvas) self.vbox.Add(self.toolbar, 0, wx.EXPAND) self.panel.SetSizer(self.vbox) self.vbox.Fit(self) #plt.savefig("house_with_colors.png") # save as png #plt.show() # display if __name__ == '__main__': app = wx.PySimpleApp() app.frame = NetworkFrame() app.frame.Show() app.MainLoop() 

    попробуй это

     def animate(): tstart = time.time() nf = 100 for i in np.arange(1,nf): #... #update plot code #... fig.canvas.draw() # stop execution of animate() untill the generators next() method is called yield True # continue animation print 'FPS:' , nf/(time.time()-tstart) raise SystemExit 
    Python - лучший язык программирования в мире.