尽管我仍然认为您应该使用bokeh,但我将告诉您如何使用matplotlib来实现它。在
它不能工作的问题是matplotlib的事件循环不是活动的,因此它不能消化窗口事件(比如close或resize)。不幸的是,它不可能从外部引发这种消化。您需要做的是使用matplotlib的动画系统。
实际上,您的代码已经为它做好了充分的准备,因此您可以使用FuncAnimation。在import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import math
# generate data
x = [0.1*_a for _a in range(1000)]
y = map(lambda x : math.sin(x), x)
# don't need ion, we're using block=True (see end of code)
fig, ax = plt.subplots()
fig.show()
# ax = plt.gca()
lines, = ax.plot([], [])
# ax.set_ylim(-1, 1)
ax.grid()
MAX_N_DATA = 100
x_data = []
y_data = []
def showdata(i):
# New data received
x_data.append(x[i])
y_data.append(y[i])
# limit data length
if x_d