具有透明框架和非透明边缘的图例

Legend with transparent frame and non-transparent edge

在图例中设置透明度时:

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。

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

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