无法调整matplotlib窗口的大小

时间:2014-01-21 16:07:52

标签: python matplotlib

我有一个使用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)

如何更新数据时能够在第一个示例中调整窗口大小?

谢谢!

1 个答案:

答案 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()

底线是不应该在“生产”代码中使用,但作为快速黑客确定它有效。