2013-04-12 28 views
5

Sono un po 'nuovo a matplotlib. Quello che sto cercando di fare è scrivere un codice che salva diverse figure in file eps, e quindi genera una figura composita. Fondamentalmente quello che mi piacerebbe fare è avere qualcosa di similematplotlib - trama duplicata da una figura all'altra?

def my_plot_1(): 
    fig = plt.figure() 
    ... 
    return fig. 

def my_plot_2(): 
    fig = plt.figure() 
    ... 
    return fig 

def my_combo_plot(fig1,fig2): 
    fig = plt.figure() 
    gs = gridspec.GridSpec(2,2) 
    ax1 = plt.subplot(gs[0,0]) 
    ax2 = plt.subplot(gs[0,1]) 
    ax1 COPY fig1 
    ax2 COPY fig2 
    ... 

dove poi ho potuto fare qualcosa di simile

my_combo_plot(my_plot_1() , my_plot_2()) 

e hanno tutti i dati e le impostazioni vengono copiate dalle trame restituiti dalla prima due funzioni, ma non riesco a capire come questo sarebbe stato fatto con matplotlib.

risposta

5

Poiché il tipo di pyplot funziona come una macchina a stati, non sono sicuro che sia possibile ciò che chiedi. Vorrei invece calcolare il codice di disegno, qualcosa del genere:

import matplotlib.pyplot as plt 

def my_plot_1(ax=None): 
    if ax is None: 
     ax = plt.gca() 
    ax.plot([1, 2, 3], 'b-') 

def my_plot_2(ax=None): 
    if ax is None: 
     ax = plt.gca() 
    ax.plot([3, 2, 1], 'ro') 

def my_combo_plot(): 
    ax1 = plt.subplot(1,2,1) 
    ax2 = plt.subplot(1,2,2) 
    my_plot_1(ax1) 
    my_plot_2(ax2) 
+0

Grazie! Questa è una buona soluzione per quello che sto cercando di fare. –

+1

Questa è la migliore soluzione IMHO. Volevo solo aggiungere che, ora che le cifre sono selezionabili, tecnicamente è anche possibile copiare un'istanza di figura - puoi farlo anche da un backend all'altro. – pelson

+1

Questo potrebbe essere un lavoro rapido ma non è una risposta. Se hai "istruzioni di tracciamento" che richiedono molto tempo, questa soluzione non è fattibile. Dite che ho una trama 3D e voglio mostrare, in 3 sottotrame, le viste XZ, YZ e XY. In linea di principio potresti usare lo stesso grafico e cambiare la vista. Con questa soluzione, si traccia semplicemente 3 volte anziché una volta e si modifica la vista. (Purtroppo, anche io non so come raggiungerlo). Qualcuno? – user989762

Problemi correlati