2016-07-07 7 views
1

私はcsvファイルからデータを読み込んでプロットする関数を作成しました。今度は同じファイルのデータの別の部分をサブプロットに追加する必要があるので、最初の関数を呼び出してサブプロットを追加する関数を作成しようとしました。私がこれをすると、私は2人を別の人物として見せます。どのように私はこれを抑制し、両方を同じ数字で表示させることができますか?ここで前の関数によって生成されたプロットにサブプロットを追加します。

は、私のコードのモックアップです:

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() 

私はまったく表示されません把握1を削除した場合、私は2 plt.show()文を持っていますが、ことを実現します。

答えて

2

matplotlib.gridspecを具体的に使用する必要があるかどうかはわかりませんが、subplot2gridを使用すると作業が簡単になります。

enter image description here

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() 

これは、二つのサブプロットして以下に示すものの図を生成し

関連する問題