调整文本背景透明度

45 投票
1 回答
63171 浏览
提问于 2025-04-18 06:45

我想在一个matplotlib图形上放一些文字,并且希望文字和背景都是透明的。下面这段代码

import numpy as np
import matplotlib.pyplot as plt
plt.figure()
ax = plt.subplot(111)
plt.plot(np.linspace(1,0,1000))
t = plt.text(0.03,.95,'text',transform=ax.transAxes,backgroundcolor='0.75',alpha=.5)
plt.show()

让文字相对于背景变得半透明,但背景却完全不透明,遮住了图形中的线条。

t.figure.set_alpha(.5)

还有

t.figure.patch.set_alpha(.5)

这些方法也没有解决问题。

1 个回答

84

传递给 plt.text()alpha 参数可以改变文本字体的透明度。如果你想改变背景的透明度,就需要用 Text.set_bbox() 来调整 alpha

t = plt.text(0.5, 0.5, 'text', transform=ax.transAxes, fontsize=30)
t.set_bbox(dict(facecolor='red', alpha=0.5, edgecolor='red'))
#changed first dict arg from "color='red'" to "facecolor='red'" to work on python 3.6

如果你想去掉文本框的边框,正如 @halt9k 的评论中提到的,你可以使用 .set_bbox(dict(facecolor='white', alpha=0.5, linewidth=0))

enter image description here

撰写回答