[解決済み】保存された画像の周りの余白を削除する
2022-04-01 21:40:42
質問
画像を撮影し、何らかの処理をした後に保存する必要があります。図を表示するときは問題ないのですが、図を保存した後、保存した画像の周りに余白ができてしまいました。試しに
'tight'
オプションで
savefig
メソッドも動作しませんでした。コードです。
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
fig = plt.figure(1)
img = mpimg.imread("image.jpg")
plt.imshow(img)
ax=fig.add_subplot(1, 1, 1)
extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
plt.savefig('1.png', bbox_inches=extent)
plt.axis('off')
plt.show()
NetworkXを使って基本的なグラフを図に描き、保存しようとしています。グラフがない場合はうまくいくのですが、グラフを追加すると保存した画像の周りに白い部分ができてしまうことに気がつきました。
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import networkx as nx
G = nx.Graph()
G.add_node(1)
G.add_node(2)
G.add_node(3)
G.add_edge(1, 3)
G.add_edge(1, 2)
pos = {1:[100, 120], 2:[200, 300], 3:[50, 75]}
fig = plt.figure(1)
img = mpimg.imread("image.jpg")
plt.imshow(img)
ax=fig.add_subplot(1, 1, 1)
nx.draw(G, pos=pos)
extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
plt.savefig('1.png', bbox_inches = extent)
plt.axis('off')
plt.show()
解決方法は?
私の「解決策」がなぜ、どのように機能するのか、正確に知っているとは言えませんが、これは、いくつかの翼断面の輪郭を(白い余白なしで)PDFファイルにプロットしようとしたときに、私がしなければならなかったことです。 (IPythonのノートブックの中で、-pylabフラグを付けてmatplotlibを使ったことに注意してください。)
plt.gca().set_axis_off()
plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0,
hspace = 0, wspace = 0)
plt.margins(0,0)
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.savefig("filename.pdf", bbox_inches = 'tight',
pad_inches = 0)
いろいろなところで解除してみましたが、これだと必ずどこかに白い余白ができてしまいます。余白がないことで図の限界付近の太い線が削られないように、これを修正することも必要でしょう。
関連
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
PythonによるExcelファイルの一括操作の説明
-
Python Pillow Image.save jpg画像圧縮問題
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み] Matplotlib のプロット: 軸、凡例、空白を削除する
-
[解決済み] 改行やスペースを入れずに印刷する方法
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] リスト内の重複を削除する
-
[解決済み] pipのキャッシュを削除する?
最新
-
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によるLeNetネットワークモデルの学習と予測
-
Pythonによるjieba分割ライブラリ
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
[解決済み】お使いのCPUは、このTensorFlowバイナリが使用するようにコンパイルされていない命令をサポートしています。AVX AVX2
-
[解決済み】ilocが「IndexError: single positional indexer is out-of-bounds」を出す。
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み] Matplotlib のプロット: 軸、凡例、空白を削除する