【问题标题】:Transparent background with matplotlib's set_title()matplotlib 的 set_title() 透明背景
【发布时间】:2016-04-19 14:12:21
【问题描述】:

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

我尝试了三种方法(一种取自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')

输出:

【问题讨论】:

    标签: python matplotlib transparency alpha-transparency


    【解决方案1】:

    你快到了。问题是你有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))
    

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

    解决该问题的一种方法是将facecoloredgecolor 显式定义为(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)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-19
      • 2020-03-30
      • 2021-10-07
      • 1970-01-01
      • 2020-09-18
      • 2011-03-08
      • 1970-01-01
      • 2021-09-20
      相关资源
      最近更新 更多