2016-07-07 4 views
1

Ich habe eine Funktion geschrieben, die Daten aus einer CSV-Datei liest und grafisch darstellt. Jetzt muss ich ein Subplot mit einem anderen Teil der Daten aus der gleichen Datei hinzufügen, also habe ich versucht, eine Funktion zu schreiben, die die erste Funktion aufruft und ein Subplot hinzufügt. Wenn ich das mache, erscheinen die beiden als verschiedene Figuren. Wie kann ich dies unterdrücken und beide in der gleichen Figur zeigen lassen? Hierfügen Sie ein Teilplot zu dem Plot hinzu, das von einer vorherigen Funktion erzeugt wurde

ist ein Mock-up von meinem Code:

def timex(h_ratio = [3, 1]): 

    import matplotlib.pyplot as plt 
    import numpy as np 
    import matplotlib.gridspec as gridspec 

    total_height = h_ratio[0] + h_ratio[1] 
    gs = gridspec.GridSpec(total_height, 1) 

    time = [1, 2, 3, 4, 5] 
    x = [1, 2, 3, 4, 5] 
    y = [1, 1, 1, 1, 1] 

    ax1 = plt.subplot(gs[:h_ratio[0], :]) 
    plt.plot(time, x) 
    plot = plt.gcf 
    plt.show() 

    return time, x, y, plot, gs, h_ratio 

def timeyx(): 
    import matplotlib.pyplot as plt 
    import matplotlib.gridspec as gridspec 

    time, x, y, plot, gs, h_ratio = timex(h_ratio = [3, 1]) 
    ax2 = plt.subplot(gs[h_ratio[1], :]) 
    plt.plot(time, y) 
    plt.show() 

timeyx() 

Ich weiß, dass ich zwei plt.show() Aussagen, aber wenn ich einen entfernen, die überhaupt nicht zeigen Figur.

Antwort

2

Ich bin mir nicht sicher, ob Sie speziell matplotlib.gridspec verwenden müssen oder nicht, aber Sie können subplot2grid verwenden, um die Arbeit zu vereinfachen.

import matplotlib.pyplot as plt 

def timex(): 
    time = [1, 2, 3, 4, 5] 
    x = [1, 2, 3, 4, 5] 
    y = [1, 1, 1, 1, 1] 

    ax1 = plt.subplot2grid((1,2), (0,0)) 
    ax1.plot(time, x) 

    return time, x, y 

def timeyx(): 

    time, x, y = timex() 

    ax2 = plt.subplot2grid((1,2), (0,1)) 
    ax2.plot(time, y) 

timeyx() 
plt.show() 

Dies erzeugt eine Abbildung unten mit zwei Nebenhandlungen gezeigt:

enter image description here

Verwandte Themen