webdevqa.jp.net

matplotlibを使用して別々のウィンドウで複数のプロットを表示することは可能ですか?

こんにちは私は関数を10回プロットし、個別の値も出力しています。また、10個のケースすべてを別々のウィンドウに個別にプロットしたいと考えました。

だから私はまだ最初のインスタンスだけをプロットしているプロットのために新しい_for loop_を作成しました、そして最初のインスタンスを閉じると、それだけが2番目のインスタンスを見ることができます。

plt.hold(true)も使用しようとしました。

これが私がやろうとしたことです-

_def signal():
    t1 = np.random.choice(candidates)
    t2 = np.random.choice(candidates)
    t3 = np.random.choice(candidates)
    t4 = np.random.choice(candidates)
    t5 = np.random.choice(candidates)
    y = a * np.exp(-t /t1) + a * np.exp(-t /t2) + a * np.exp(-t /t3) + a * np.exp(-t /t4) + a * np.exp(-t /t5)
return y

for i in range(nsets):
    signalset = []
    signalset.append(signal())
    print(signal())

for i in range (nsets):
    plt.plot(t, signal())
    plt.show()
    plt.hold(True)
_

10の異なるウィンドウで10のプロットを同時に生成する方法はありますか?

9
zerogravty

図にはインデックスplt.figure(n)があり、n1
これにより、すでに作成された図を後でアクティブにして、新しいものをプロットすることができますが、ループ内に複数の図を作成することもできます。

すべての画像を同時に表示するには、最後にplt.show()を使用します。
この場合は、

for i in range(10):
    plt.figure(i+1) #to let the index start at 1
    plt.plot(t, signal())
plt.show()

これにより、スクリプトの最後に10個のウィンドウがすべて作成されます。

新しい図ウィンドウを作成するには、plt.figure(10)などの新しい図インデックスを指定します。あなたの場合あなたは使うことができます:

for i in range (nsets):
    plt.figure(i) # choose figure i to be the current figure (create it if not already existing)
    plt.plot(t, signal())
    plt.show()
    plt.hold(True)
1
Julien