use*_*369 10 python matplotlib
我正在尝试使用pylab和networkx编写动画模拟.模拟并不是一直很有趣,所以大部分时间我都希望它能够快速运行,但是,我希望能够暂停它并在它看起来很有趣时看一下它.暂停屏幕直到按键才能解决我的问题,因为我可以按我想要的速度快慢按键.
这是一个示例情况:
import numpy as np
import networkx as nx
import pylab as plt
import sys
def drawGraph(matrix):
plt.clf()
G = nx.DiGraph(np.array(matrix))
nx.draw_networkx(G)
plt.draw()
plt.pause(1) #I want this pause to be replaced by a keypress
#so that it pauses as long as I want
A=[[0,1],[1,0]]
B=[[0,1],[0,0]]
x=1
while True:
if x==1:
drawGraph(A)
x=0
else:
drawGraph(B)
x=1
Run Code Online (Sandbox Code Playgroud)
我应该如何重写plt.pause(1)行,以便程序暂停直到按下?
其他线程中建议的某些方法会暂停程序,但图片会消失或不会更新.
小智 50
有没有理由不使用waitforbuttonpress()?
import matplotlib.pyplot as plt
A=[[0,1],[1,0]]
B=[[0,1],[0,0]]
x=1
while True:
if x==1:
drawGraph(A)
x=0
else:
drawGraph(B)
x=1
plt.waitforbuttonpress()
Run Code Online (Sandbox Code Playgroud)
正如它所说,这将等待按键或按钮按下以发生某些事情.如果您想了解有关该事件的更多信息,它会返回值.很容易.
单击鼠标停止并重新启动以下代码.它使用"TKAgg"后端:
import numpy as np
import networkx as nx
import matplotlib
matplotlib.use("TkAgg")
import pylab as plt
plt.ion()
fig = plt.figure()
pause = False
def onclick(event):
global pause
pause = not pause
fig.canvas.mpl_connect('button_press_event', onclick)
def drawGraph(matrix):
fig.clear()
G = nx.DiGraph(np.array(matrix))
nx.draw_networkx(G)
plt.draw()
A=[[0,1],[1,0]]
B=[[0,1],[0,0]]
x=1
while True:
if not pause:
if x==1:
drawGraph(A)
x=0
else:
drawGraph(B)
x=1
fig.canvas.get_tk_widget().update() # process events
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23424 次 |
| 最近记录: |