2013-04-12 17 views
5

Jestem trochę nowy w matplotlib. Próbuję napisać kod, który zapisuje kilka liczb w plikach eps, a następnie generuje liczbę złożoną. Zasadniczo co chcę zrobić, to mieć coś podobnegomatplotlib - duplikat wykresu od jednej figury do drugiej?

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 
    ... 

gdzie później mógłby zrobić coś jak

my_combo_plot(my_plot_1() , my_plot_2()) 

i mają wszystkie dane i ustawienia skopiowane z działek zwróconych przez pierwszy dwie funkcje, ale nie wiem, jak to zrobić z matplotlib.

Odpowiedz

5

Od czasu pirotechnika, takiego jak automat stanów, nie jestem pewien, czy to, o co prosisz, jest możliwe. Zamiast tego wyprowadziłbym kod rysunku, coś takiego:

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

Dzięki! To dobre rozwiązanie dla tego, co próbuję zrobić. –

+1

To jest najlepsze rozwiązanie IMHO. Chciałem tylko dodać, że teraz, gdy liczby są możliwe do wybrania, technicznie możliwe jest również kopiowanie instancji postaci - można to nawet zrobić z jednego backendu do drugiego. – pelson

+1

To może być szybka praca, ale nie jest odpowiedzią. Jeśli masz "instrukcje kreślenia", które zajmują dużo czasu, to rozwiązanie nie jest możliwe. Załóżmy, że mam działkę 3D i chcę pokazać, w 3 działkach, widoki XZ, YZ i XY. Zasadniczo możesz użyć tej samej działki i zmienić widok. Dzięki temu rozwiązaniu wystarczy wydrukować 3 razy zamiast raz i zmienić widok. (Niestety, nie wiem też, jak to osiągnąć). Ktoś? – user989762

Powiązane problemy