1. ホーム
  2. python

[解決済み] matplotlibからフレームを取り除く方法 (pyplot.figure vs matplotlib.figure ) (frameon=False matplotlibで問題発生)

2022-03-04 07:20:50

質問

図中の枠を消すには、次のように書きます。

frameon=False

との相性は抜群です。 pyplot.figure しかし matplotlib.Figure では、灰色の背景が削除されるだけで、フレームは残ります。また、線だけを表示し、残りの部分はすべて透明にしたいのです。

pyplotで私は私が望むものを行うことができます、私は私の質問を拡張するために言及したくないいくつかの長い理由のためにmatplotlibでそれをやってみたい。

どのように解決するのですか?

まず最初に、もしあなたが savefig を指定しない限り、保存時に図の背景色を上書きしてしまうことに注意してください (例. fig.savefig('blah.png', transparent=True) ).

ただし、画面上で軸と図の背景を消すには、両者の間に ax.patchfig.patch を見えなくする。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(10))

for item in [fig, ax]:
    item.patch.set_visible(False)

with open('test.png', 'w') as outfile:
    fig.canvas.print_png(outfile)

<イグ

(もちろん、SOの白背景では違いはわかりませんが、すべて透過しています......)。

線以外を表示させたくない場合は ax.axis('off') :

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot(range(10))

fig.patch.set_visible(False)
ax.axis('off')

with open('test.png', 'w') as outfile:
    fig.canvas.print_png(outfile)

<イグ

その場合、軸が図いっぱいになるようにしたい場合がありますが。 軸の位置を手動で指定すれば、図全体を占めるように指示することができます(代わりに subplots_adjust ただし、1本の軸の場合はこちらの方がシンプルです)。

import matplotlib.pyplot as plt

fig = plt.figure(frameon=False)
ax = fig.add_axes([0, 0, 1, 1])
ax.axis('off')

ax.plot(range(10))

with open('test.png', 'w') as outfile:
    fig.canvas.print_png(outfile)

<イグ