Plt.showは完全グラフを表示しますが、savefigは画像をトリミングしています


82

私のコードは画像をファイルに正常に保存していますが、重要な詳細を右側からトリミングしています。答えは、それがために発生した場合、この問題を修正するために存在するplt.showが、それはsavefig間違って、この例のグラフを生成しているコマンド。これはどのように修正できますか?

私のコードの関連サンプル:

import glob
import os
for file in glob.glob("*.oax"):
    try:
        spc_file = open(file, 'r').read()
        newName = file[6:8] + '-' + file[4:6] + '-' + file[0:4] + ' ' + file[8:12] +  ' UTC (Observed) - No Sea Breeze Day'
        plt.title(newName, fontsize=12, loc='left')
        plt.savefig('X:/' + newName + '.png')        
        plt.show()
    except Exception:
        pass

そして画像(上は上plt.show、下はから作成されたファイルですsavefig

plt.showで表示されたときの画像 ファイルに保存したときの画像



できれば追加のデータやパッケージをダウンロードせずに、他の人がテストできる簡単な例を作成できますか?
ナポリタン2016年

1
@ネアポリタン。それは私のスキルセットを少し超えています。以下に示す回答は、データとは関係なく、この問題の一般的な解決策があることを示唆しています。
ジョスカーク2016年

@Neopolitan問題がどのように発生したのかわからないので、それを複製できるより単純なデータを作成する方法がわかりません。
Joss Kirk 2016年

回答:


156

あなたは試すことができます

plt.savefig('X:/' + newName + '.png', bbox_inches='tight')

または、次のように図のサイズを定義することもできます

fig = plt.figure(figsize=(9, 11))
...
plt.savefig(filename, bbox_inches = 'tight')

ご回答ありがとうございます。明日実装し、どうなるかお知らせします!
ジョスカーク2016年

3
私は最初の答えを実装しました、そしてそれはうまくいきました!ありがとうございました!
ジョスカーク2016年

1
これはデフォルトのオプションである必要があります、bbox_inches = 'tight'。高いdpi値と組み合わせて使用​​したところ、非常にうまく機能しました。
DeepakV19年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.