带有 matplotlib 的 set_title() 的透明背景

Gab*_*iel 2 python transparency matplotlib alpha-transparency

我需要使用set_title()为绘图绘制标题,其中其背景以某种程度的透明度显示。

我已经尝试了三种方法(一种取自这个答案),但似乎都没有奏效。它们要么使文本的字体或边缘透明,但不是背景本身。

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')
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

tmd*_*son 5

你快到了。问题是你有facecolor='none',所以即使有一个alpha集合,也没有什么可以透明的,你根本看不到背景。

您可以通过设置来更改此设置facecolor='white',例如,修改您的“方法 2”:

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

在此处输入图片说明

这也有使黑色边框也透明的副作用。

解决该问题的一种方法是将facecolorand显式定义edgecolor(R,G,B,A)元组,并确保edgecolorhas alpha=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)))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明