我正在进行需要一些时间的模拟,所以我想有一个实时情节,每一步都会更新,这样我就可以跟踪最有用的信息并检查一切是否顺利。我使用此功能依赖于matplotlib.pyplot
:
def monitor(FSI_config,tracking):
print("Tracking...")
it = [];
i=0;
while i < len(tracking.tracking_vel):
it.append(i)
i=i+1
plt.figure(1)
plt.subplot(211) # the first subplot in the first figure
line1, = plt.plot(it, tracking.tracking_pos, linewidth=2.0,
color='r', linestyle='--', marker='.', markersize=15,
markeredgecolor='k', markerfacecolor='k')#,
label=r'$C_D$')
plt.subplot(212) # the second subplot in the first figure
line1, = plt.plot(it, tracking.tracking_vel, linewidth=2.0,
color='r', linestyle='--', marker='.', markersize=15,
markeredgecolor='k', markerfacecolor='k')#, label=r'$C_L$')
plt.show()
因此,函数monitor
将在模拟的每个步骤中执行,并绘制tracking
中包含的值。下划线重要的是tracking
在每一步中都包含要绘制的所有值(在进入monitor
之前,每个新值都附加在新步骤的末尾)现在,除了详细信息之外脚本,真正的一点是,一旦函数执行plt.show(),整个模拟就会停止,直到图形关闭。是否有一种方法可以将图形保留在后台,同时脚本继续运行,并在新图形(在下一步骤)绘制更新值之前自动关闭它?
感谢您的帮助
PS:问题与real-time plotting in while loop with matplotlib不同,因为我们在谈论自我更新的情节而不是for / while循环内的情节。