首页 > 解决方案 > 具有透明框架和不透明边缘的图例

问题描述

在图例中设置透明度时:

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。

标签: pythonmatplotliblegendalpha

解决方案


不幸的是,它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))

推荐阅读