透明边框、非透明边缘的图例

9

在设置图例透明度时:

plt.legend(framealpha=0.5)

它影响了背景和边缘。我如何仅对背景应用透明度而不影响边缘?

我已经尝试过:

plt.legend(edgecolor=(0, 0, 0, 1.), facecolor=(1, 1, 1, 0.1))

我想要一个可以改变颜色但不能改变透明度的方法,即使用facecolor=(1, 0, 0, 0.1)可以将背景色更改为红色,但是使用facecolor=(1, 0, 0, 0.5)并没有改变透明度。

我正在使用matplotlib v3.1.1版本。


plt.legend(edgecolor=(0, 0, 0, 1.), facecolor=(1, 1, 1, 0.1)) 对我来说运行良好。您能否提供更多关于您所面临问题的信息? - ImportanceOfBeingErnest
有趣。对我来说,使用 facecolor=(1, 1, 1, 0.1)facecolor=(1, 1, 1, 0.9) 没有区别。我正在使用 matplotlib v3.1.1。 - EternalGenin
我明白了,那就是真正的问题。 - ImportanceOfBeingErnest
1个回答

18

不幸的是,framealpha 会覆盖实际边缘或面颜色的透明度值。因此,需要手动在图例补丁上设置颜色,包括透明度。

legend = plt.legend(loc="upper right", edgecolor="black")
legend.get_frame().set_alpha(None)
legend.get_frame().set_facecolor((0, 0, 1, 0.1))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接