调整文本背景透明度
我想在一个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))
。