2013-01-18 8 views
7

Stworzyłem oprogramowanie do analizy sygnałów. Istnieje wiele funkcji, a każda z nich w końcu wyświetla złożoną figurę zawierającą etykiety, wykres, axhspan, axvspan itp. Zwykle funkcje te są wywoływane indywidualnie. Każda z moich funkcji zwraca obiekt liczbowy, który mogę zapisać na przykład w pdf.W jaki sposób mogę rozmieścić wiele figur Pyplot w rodzaju układu?

def Myfunction1(self): 
    fig = pyplot.figure() 
    ...do somestuff, create my figure 
    pyplot.show() 
    fig.savefig('C:\MyFigurefolder\figure1.pdf', dpi=300) 
    return fig 

def Myfunction2(self): 
    fig = pyplot.figure() 
    ...do some other stuff, create my 2nd figure 
    pyplot.show() 
    fig.savefig('C:\MyFigurefolder\figure2.pdf', dpi=300) 
    return fig 

Teraz chciałbym stworzyć coś w rodzaju „Podsumowanie rysunku”, wykonując do metaanaliz i łączenie wielu figur razem i zapisywanie ich w końcowej pdf. Naprawdę nie wiem, jak powinienem to zrobić. Czy istnieje sposób na wykorzystanie całych obiektów figur (a może wielu indywidualnych pdf) do wykonania mojej figury?

Coś jak:

def FinalFigure(self): 

    final = A_Kind_Of_Layout_Or_A_Figure_or_something 

    a=self.Myfunction1() 
    b=self.Myfunction2() 

    Action_to_arrange_a_and_b_like_gridspec 

    final.savefig('C:\MyFigurefolder\FinalFigure.pdf', dpi=300) 
+0

Byłoby [to rozwiązanie] (http://stackoverflow.com/a/11172032/1984421) praca dla Ciebie? –

Odpowiedz

9

Można połączyć kilka działek z matplotlib.pyplot.subplot. Aby uzyskać większą kontrolę nad układem, sprawdź numer GridSpec.

Edycja: wniosek, krótki przykład z połączonego artykule:

gridspec przykład zapewnia tablicowej (2d lub 1d) indeksowania, która zwraca wystąpienie SubplotSpec. Dla opcji SubplotSpec, która obejmuje wiele komórek, użyj plasterka.

import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 
gs = gridspec.GridSpec(3, 3) 
ax1 = plt.subplot(gs[0, :]) 
ax2 = plt.subplot(gs[1,:-1]) 
ax3 = plt.subplot(gs[1:, -1]) 
ax4 = plt.subplot(gs[-1,0]) 
ax5 = plt.subplot(gs[-1,-2]) 

enter image description here

+2

Dla każdego, kto to czyta: jeśli wolisz ** zorientowane obiektowo **, tak jak ja, możesz użyć 'ax1 = fig.add_subplot (gs [0,:])', itd. –

Powiązane problemy