python - 具有透明框架和不透明边缘的图例
问题描述
在图例中设置透明度时:
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))