2017-09-26 32 views
1

したがって、パラメータのデータに基づいて棒グラフを正しく作成して保存する関数generategraph(file)があります。ここにそれを保存する部分があります。複数グラフ上のMatplotlib savefig()は同じグラフを保存し続けます

plt.show() 
    savefile = file.split('.txt')[0] + '.png' 
    plt.savefig(savefile) 

次に、メインでは、一連のファイルを調べ、それぞれについてジェネリックグラフを呼び出します。

for fil in files: 
     generategraph(fil) 

plt.showは()私が正しいグラフ(異なるグラフ毎回)を与えるが、私は保存された数字に行くとき、彼らは同じグラフ(のすべてのようでlen(ファイルです)保存された数字の数が、それが意味を成すならば、それぞれが最初のファイルのグラフです)。私はplt.savefigがしたいものをplt.show()がやっているので、ちょうど混乱しています。

答えて

1

おそらく、保存するFigureの名前がそれぞれ異なるかどうかを確認する必要があります。 (以下では、あなたがファイル名を取得する方法は明らかではない、擬似コードである。)

[編集]次に、あなたはおそらく別の方法として、あなたはgenerategraphの署名を変更plt.savefig(savefile)

#initialize idx to 0 earlier, and don't re-initialize it. 

idx += 1 
savefile = file + str(idx) + '.png' # file might need to be replaced by a string 
plt.savefig(savefile) 
plt.show()    # place after plt.savefig() 

plt.show()を置く必要があります

def generategraph(file, idx): 
    savefile = file + str(idx) + '.png' # file might need to be replaced by a string 
    plt.savefig(savefile) 
    plt.show()    # place after plt.savefig() 



for idx, fil in enumerate(files): 
    generategraph(fil, idx) 
+0

を各図は、それぞれ別の名前で保存しています私が書いたコードの時間。例えば、 "a.txt、b.txt、c.txt"という3つのファイルがある場合、私のコードはそれぞれのコードを通り、そのデータに基づいてグラフを生成し、それを "a.png、b.png"として保存します、c.png "コードのこの部分は、これらの.pngファイルで終了します。問題は、これらの.pngファイルのそれぞれが同じグラフであることです。しかし、plt.show()で表示されるグラフは正しいグラフです。私はコード内の同じ場所に保存して表示しているので、ちょっと混乱しました。それは同じではなく、そうでなければならない。 –

+0

OK、知っておきたい - 私はplt.savefig()の後に 'plt.show()'を置くことを提案して私の答えを編集しました。 –

+0

.savefig()の後に.show()を置いてください。ありがとう! –

1

あなたはstate-machine(pyplot)インターフェイスを使用しています。しないでください。

明示的に自分のフィギュアを作成します。直接の

fig1, ax1 = pyplot.subplots() 

法:

lines, = ax1.plot(data1, data2, ...) 

を次に個別にそれらを保存して閉じます。

fig1.savefig(filename, dpi=300) 
pyplot.close(fig1) 
関連する問題