我有一个使用matplotlib的情节,每秒更新一次。它仅用于慢速监控,所以我采用了一次又一次的清理和绘图的简单方法,这不是最佳的,但我想要简单。
my_fig = plt.figure()
ax1 = plt.subplot(111)
plt.show(block=False)
while True:
data = read_data_and_process(...)
ax1.plot_date(data[0], data[1], '-')
my_fig.autofmt_xdate()
plt.draw()
time.sleep(1)
ax1.cla()
它有效但如果我调整窗口大小,则图表不会改变其大小。如果我在没有更新的情况下绘制数据,我可以调整窗口大小,并相应地调整大小:
my_fig = plt.figure()
ax1 = plt.subplot(111)
data = read_data_and_process(...)
ax1.plot_date(data[0], data[1], '-')
my_fig.autofmt_xdate()
plt.show(block=True)
如何更新数据时能够在第一个示例中调整窗口大小?
谢谢!
答案 0 :(得分:1)
当我尝试这段代码时,我甚至无法抓住窗口来调整它的大小,因为matplotlib后端的事件循环被卡住了。我建议查看Animation API的matplotlib(参见examples)。
但是,通过强制Qt后端来快速破解你的示例。
import matplotlib
matplotlib.use('QT4Agg')
from matplotlib import pyplot as plt
from PyQt4 import QtCore,QtGui
import time
# The rest of your code as normal
# then at the bottom of the while loop
plt.draw()
QtGui.qApp.processEvents()
time.sleep(1)
ax1.cla()
底线是不应该在“生产”代码中使用,但作为快速黑客确定它有效。