2016-04-19 8 views
1

Ich muss einen Titel für ein Diagramm mit set_title() zeichnen, wo sein Hintergrund mit einem gewissen Maß an Transparenz zeigt.Transparenter Hintergrund mit Matplotlibs set_title()

Ich habe drei Methoden ausprobiert (eine aus this answer entnommen), aber keine scheint zu funktionieren. Sie machen entweder die Schrift des Textes oder die Kanten transparent, aber nicht den Hintergrund selbst.

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') 

Ausgang:

enter image description here

Antwort

1

Sie fast da waren. Das Problem ist, dass Sie facecolor='none' haben, also selbst mit einem alpha Set, gibt es nichts transparent zu machen, und Sie sehen den Hintergrund überhaupt nicht.

Sie können dies durch facecolor='white' Einstellung ändern, zum Beispiel Ihre „Methode 2“ ändern: zu

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

enter image description here

Dies hat den Nebeneffekt, auch was die schwarzen Rand transparent.

Ein Weg, um dieses Problem zu beheben, ist ausdrücklich facecolor und edgecolor als (R,G,B,A) Tupeln zu definieren, und stellen Sie sicher, dass die edgecoloralpha=1 hat:

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

Große Antwort tom, vielen Dank! – Gabriel

Verwandte Themen