matplotlib は plt.savefig() を使って、画像の隣にある空白を除いて出力します。
2022-02-26 15:25:06
最近、出力画像を密着させ、軸を取り除き、出力画像サイズを設定する必要があるプロットに取り組んでいます。
しかし、matplotlib は plt.savefig() を使って画像を保存していることがわかりました。
は周囲が空白の円になっています。では、その空白を取り除くにはどうしたらいいのでしょうか?
まず、軸表示をオフにすること。
plt.axis('off')
しかし、これでは表示を消しただけで、透明軸が左下の位置を占めたままとなり、出力画像が右にずれてしまいます。
軸を完全に削除するには、コードを次のように変更する必要があります。
plt.axis('off')
fig = plt.gcf()
fig.set_size_inches(7.0/3,7.0/3) #dpi = 300, output = 700*700 pixels
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)
plt.margins(0,0)
fig.savefig(out_png_path, format='png', transparent=True, dpi=300, pad_inches = 0)
fig = plt.gcf()
fig.set_size_inches(7.0/3,7.0/3) #dpi = 300, output = 700*700 pixels
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0, hspace = 0, wspace = 0)
plt.margins(0,0)
fig.savefig(out_png_path, format='png', transparent=True, dpi=300, pad_inches = 0)
これで空白の削除は完了です。
注意: subplot_adjust + margin(0,0) の代わりに、bbox_inches = 'height' を fig.savefig() の引数に追加しても実現可能です。
ただし、画像の出力サイズの設定は無効になります。
関連
-
AttributeError: 'mywindow' オブジェクトには 'setCentralWidget' という属性がありません。
-
[Python] error could not broadcast input array from shape (26) into shape (26,1)
-
'DataFrame' オブジェクトに 'sort' 属性がありません。
-
ImportError: Windows の Django でプロジェクトを作成するとき、django.core solution という名前のモジュールがない。
-
AttributeError: モジュール 'pip' には 'main' という属性がありません。
-
AttributeError: 'NoneType' オブジェクトには 'group' という属性がありません。
-
ModuleNotFoundError: numpy.testing.decorators'という名前のモジュールがありません。
-
ModuleNotFoundError: Pythonソリューションに'scipy'という名前のモジュールがありません。
-
Python による pyserial 経由でのシリアルポートの読み取りと書き込み
-
plt.acorr() 関数の使用例 - ValueError: object too deep for desired array (オブジェクトが深すぎて、必要な配列が得られない)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコードのデバッグ問題:IOError: イメージファイルを識別できない
-
Pandasの属性エラーです。AttributeError: 'Series' オブジェクトに 'reshape' 属性がない Solution
-
DataFrameのソート問題
-
ImportError: 名前 '_validate_lengths' をインポートできない。
-
AttributeError: モジュール 'tensorflow'に属性 'placeholder' がない問題
-
PyQt5演習:matplotlibでプロットする
-
OSError[Errno 48]:アドレスは既に使用されています 解決方法
-
python-OverflowError: Python の int が大きすぎるため C の long に変換できない
-
dict_keys' オブジェクトはインデックス作成ソリューションに対応していません。
-
Python - pickleファイルの異なるPython環境への変換