やりたいこと
matplotlib の背景を透明化してプロットしたいと思います。
savefig()
による図の保存の場合は、こちらの例のように ax.patch.set_alpha(float)
を使うことで実現できます。
以下の実装では、plt.show()
でディスプレイ表示する場合の透明度設定方法を扱っています。
解決方法
ウィンドウの透明化は、matplotlib
のバックエンドによって設定する方法が変わります。以下の実装では、よく利用されるバックエンドである Qt5Agg
と TkAgg
を使ってみました。
なお、matplotlib.use(backend)
でバックエンドを変えることができます。
実装
import numpy as np import matplotlib as mpl #mpl.use("TkAgg") import matplotlib.pyplot as plt np.random.seed(0) x = np.random.normal(0.0, 1.0, (2, 500)) plt.clf() plt.plot(x[0], x[1], 'bo', c="c") backend = mpl.get_backend() win = plt.gcf().canvas.manager.window if backend == 'Qt5Agg': win.setWindowOpacity(0.5) elif backend == 'TkAgg': win.lift() win.attributes("-topmost", True) win.attributes("-transparentcolor", "white") plt.show()