透明背景与 matplotlib 的 set_title()
Transparent background with matplotlib's set_title()
我需要使用 set_title() 绘制绘图的标题,其背景显示有一定程度的透明度。
我已经尝试了三种方法(一种来自 this answer),但 none 似乎有效。它们要么使文本的字体或边缘透明,但不使背景本身透明。
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')
输出:
你快到了。问题是你有 facecolor='none'
,所以即使设置了 alpha
,也没有什么可以透明的,你根本看不到背景。
您可以通过设置 facecolor='white'
来更改它,例如,修改您的 "Method 2":
ax.set_title("Title", x=0.5, y=0.92, fontsize=13,
bbox=dict(facecolor='white', alpha=0.5))
这也有使黑色边框透明的副作用。
解决该问题的一种方法是将 facecolor
和 edgecolor
显式定义为 (R,G,B,A)
元组,并确保 edgecolor
具有 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)))
我需要使用 set_title() 绘制绘图的标题,其背景显示有一定程度的透明度。
我已经尝试了三种方法(一种来自 this answer),但 none 似乎有效。它们要么使文本的字体或边缘透明,但不使背景本身透明。
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')
输出:
你快到了。问题是你有 facecolor='none'
,所以即使设置了 alpha
,也没有什么可以透明的,你根本看不到背景。
您可以通过设置 facecolor='white'
来更改它,例如,修改您的 "Method 2":
ax.set_title("Title", x=0.5, y=0.92, fontsize=13,
bbox=dict(facecolor='white', alpha=0.5))
这也有使黑色边框透明的副作用。
解决该问题的一种方法是将 facecolor
和 edgecolor
显式定义为 (R,G,B,A)
元组,并确保 edgecolor
具有 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)))