【matplotlib】グラフ全体や外側を透明にする方法[Python]

  • URLをコピーしました!
目次

matplotlib

前回、Pythonのmatplotlibで2軸グラフで軸を移動する方法を紹介しました。

今回はmatplotlibでグラフ全体や外側を透明にする方法を紹介します。

まず適当にグラフを描いて保存してみたのがこちら。

import matplotlib.pyplot as plt

x = range(0, 10)
y = [i*2 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

plt.savefig("python-matplotlib-66-1.png")

実行結果

このままでは背景が透明かどうか分かりませんので、Macの画像表示ソフト「プレビュー」で開いてみます。

透明な部分は灰色で表示される(左右の灰色は画像外の部分)のですが、グラフの背景は白くなっているので、この場合は白塗りされていることが分かります。

それでは始めていきましょう。

グラフ全体を透明にする方法

まずはグラフ全体を透明にする方法です。

この場合は「plt.savefig()」でグラフを保存する際に「transparent=True」というオプションを追加します。

また出力ファイル形式は「png」にしてください。

import matplotlib.pyplot as plt

x = range(0, 10)
y = [i*2 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

plt.savefig("python-matplotlib-66-2.png", transparent=True)

実行結果

これもこのままでは透明化されているのか分かりませんので、「プレビュー」で開いてみます。

グラフや枠線、目盛り以外の部分は灰色になっていることから、グラフ全体が透明化されたことが分かります。

グラフの外側だけ透明にする方法

次にグラフの外側だけ透明にする方法を紹介します。

その場合は「fig.patch.set_alpha(0)」をプログラムのどこかで追加します(plt.savefig()内ではありません)。

またこの場合も出力ファイル形式は「png」にしてください。

import matplotlib.pyplot as plt

x = range(0, 10)
y = [i*2 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

fig.patch.set_alpha(0)

plt.savefig("python-matplotlib-66-3.png")

実行結果

こちらもプレビューで開くと外側だけ透明になっているのが分かります。

jpgで保存した場合

ちなみにどちらも出力ファイル形式は「png」で保存してくださいとしましたが、これは透明化できるファイル形式が「png」だからです。

「jpg」はファイル形式として透明にできないため、出力ファイル形式を「jpg」としてしまうと透明化のオプションを入れたとしても透明になりませんのでご注意ください。

import matplotlib.pyplot as plt

x = range(0, 10)
y = [i*2 for i in x]

fig = plt.figure()
plt.clf()

plt.plot(x, y)

plt.savefig("python-matplotlib-66-7.jpg", transparent=True)

実行結果

プレビューで表示しても背景は透明を示す灰色になっていません。

これはプログラム上の問題ではなく、ファイル形式上の問題なので、いつも「jpg」で出力されている方は気をつけましょう。

次回は年表を描く時に便利な不等な間隔をもつ線分を描く方法を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次