我想在我的主程序中同时运行一个FuncAnimation,不幸的是,无论我做什么,它都会阻止MainProgram
的执行。
我尝试过:
plt.show(block=False)
程序继续,但情节显示为空白MainProgram
被阻止MainProgram
运行,但绘图窗口为空白我知道这个问题,但是,我认为考虑到动画的使用,提出的解决方案是不合适的。 Plotting in a non-blocking way with Matplotlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
import time
def runGraph():
# Parameters
x_len = 200 # Number of points to display
y_range = [10, 40] # Range of possible Y values to display
# Create figure for plotting
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
xs = list(range(0, 200))
ys = [0] * x_len
ax.set_ylim(y_range)
# Create a blank line. We will update the line in animate
line, = ax.plot(xs, ys)
# Add labels
plt.title('TMP102 Temperature over Time')
plt.xlabel('Samples')
plt.ylabel('Temperature (deg C)')
# This function is called periodically from FuncAnimation
def animate(i, ys):
# Read temperature (Celsius) from TMP102
temp_c = np.random.random(1)*40
# Add y to list
ys.append(temp_c)
# Limit y list to set number of items
ys = ys[-x_len:]
# Update line with new Y values
line.set_ydata(ys)
return line,
# Set up plot to call animate() function periodically
ani = animation.FuncAnimation(fig,
animate,
fargs=(ys,),
interval=50,
blit=True)
plt.show()
def MainProgram():
while 1:
print('Main program')
time.sleep(0.5)
if __name__ == '__main__':
runGraph()
MainProgram()