2014-01-21 4 views
0

매초마다 업데이트되는 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

이 코드를 사용하면 matplotlib 백엔드의 이벤트 루프가 멈추었으므로 크기를 조정할 수 없습니다. matplotlib (examples 참조)에 대해 Animation API을 살펴볼 것을 제안합니다.

그러나 여기에 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() 

하단의 내용은 "제작"코드에서 사용해서는 안되지만 빠른 해킹으로 작동합니다.

관련 문제