2012-11-11 12 views
5

Czy można skonfigurować wydruk, aby wyświetlał więcej danych po rozwinięciu?automatyczna zmiana granic oglądania przy zmianie rozmiaru matlotlib

Matplotlib tworzy skalę po zmianie rozmiaru. Aby pokazać konkretny obszar, można użyć set_xlim i takich na osiach. Mam wykres ekg-podobny pokazujący dane w czasie rzeczywistym, jego limity y są predefiniowane, ale chcę zobaczyć więcej danych wzdłuż x, jeśli rozbuduję okno lub po prostu mam duży monitor.

Używam go w aplikacji pyside i mogę po prostu zmienić xlim na zmianę rozmiaru, ale chcę bardziej czyste i ogólne rozwiązanie.

Odpowiedz

7

Jednym ze sposobów jest zaimplementowanie programu obsługi dla resize_event. Oto krótki przykład, jak to zrobić. Możesz go zmodyfikować do swoich potrzeb:

import numpy as np 
import matplotlib.pyplot as plt 

def onresize(event): 
    width = event.width 
    scale_factor = 100. 
    data_range = width/scale_factor 
    start, end = plt.xlim() 
    new_end = start+data_range 
    plt.xlim((start, new_end)) 

if __name__ == "__main__": 

    fig = plt.figure() 
    ax = fig.add_subplot(111) 
    t = np.arange(100) 
    y = np.random.rand(100) 
    ax.plot(t,y) 
    plt.xlim((0, 10)) 
    cid = fig.canvas.mpl_connect('resize_event', onresize) 
    plt.show() 
+1

użycie 'fig.dpi' jako' scale_factor' sprawia, że ​​jest jeszcze lepszy – mindless

Powiązane problemy