2012-11-11 10 views
5

È possibile impostare il grafico per mostrare più dati quando espanso?cambia automaticamente i limiti di visualizzazione sul ridimensionamento matlotlib

Scala plottaggio per grafici a mazzetta quando ridimensionata. Per mostrare un'area specifica si può usare set_xlim e tali sugli assi. Ho un grafico di tipo ecg che mostra i dati in tempo reale, i suoi limiti sono predefiniti, ma voglio vedere più dati lungo x se espongo la finestra o ho solo un grande monitor.

Lo uso in un'applicazione pyside e potrei semplicemente cambiare xlim su ridimensionamento ma voglio una soluzione più pulita e generica.

risposta

7

Un modo per eseguire questa operazione è implementare un gestore per resize_event. Ecco un breve esempio di come ciò potrebbe essere fatto. Puoi modificarlo per le tue esigenze:

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

utilizzando 'fig.dpi' come' scale_factor' lo rende ancora migliore – mindless

Problemi correlati