2016-04-19 21 views
1

set_title()を使用してプロットのタイトルを描画する必要があります。その背景はある程度の透明性を備えています。matplotlibのset_title()で透明な背景

私は3つの方法(1つはthis answerから取られました)を試みましたが、どれもうまくいかないようです。テキストのフォントやエッジを透明にしますが、背景自体は透明にしません。

MWE:

import matplotlib.pyplot as plt 

fig, ax = plt.subplots(1) 
ax.minorticks_on() 
ax.grid(b=True, which='minor', color='k', linestyle='--', lw=0.5, 
     zorder=1) 

# Method 1 
ax.set_title("Title", x=0.5, y=0.92, fontsize=13, alpha=0.2, 
      bbox=dict(facecolor='none')) 

# Method 2 
# ax.set_title("Title", x=0.5, y=0.92, fontsize=13, 
#    bbox=dict(facecolor='none', alpha=0.2)) 

# Method 3 
# t = ax.set_title("Title", x=0.5, y=0.92, fontsize=13) 
# t.set_bbox(dict(facecolor='none', alpha=0.2, edgecolor='k')) 

plt.savefig('test.png') 

出力:

enter image description here

答えて

1

あなたは、ほとんどがありました。問題はfacecolor='none'だから、alphaを設定しても、透明にすることは何もなく、背景も全く見えません。

あなたの「方法2」に変更し、例えば、facecolor='white'を設定することで、これを変更することができます。

ax.set_title("Title", x=0.5, y=0.92, fontsize=13, 
      bbox=dict(facecolor='white', alpha=0.5)) 

enter image description here

これは、あまりにも黒の境界線を透明にすることの副作用があります。その問題を解決する

の方法は、明示的に(R,G,B,A)タプルとしてfacecoloredgecolorを定義し、edgecoloralpha=1を持っていることを確認することです。

ax.set_title("Title", x=0.5, y=0.92, fontsize=13, 
      bbox=dict(facecolor=(1,1,1,0.5),edgecolor=(0,0,0,1))) 

enter image description here

+0

グレート回答トムは、どうもありがとうございました! – Gabriel