我在 matplotlib 中有一个散点图,onpick()
对它们进行了操作,如下面的 MWE 所示。
Whenever a point is selected, I run a computation on that point, that takes about 30
seconds. 我想通过在图中同一点上画一个红色圆圈来通知用户,只要用户点击它。
以下 MWE 有效,但仅在30
几秒钟后才绘制红色圆圈:
from numpy import take
from numpy.random import randn
from time import sleep
import matplotlib.pylab as plt
fig, ax = plt.subplots()
X, Y = randn(2, 10)
ax.scatter(X, Y, picker=True)
def onpick(event):
ax.scatter(take(X, event.ind), take(Y, event.ind), s=40, facecolors='none', edgecolors='red')
fig.canvas.draw()
sleep(30)#here I have MyLongComputation() in my code
fig.canvas.mpl_connect('pick_event', onpick)
plt.show()
有没有办法要求立即生效的绘图动作?万一这很重要,我会以交互模式从 Ipython 调用文件。
请注意,fig.canvas.draw()
matplotlib 不会忽略我的调用,而只会推迟到onpick()
返回时。