【问题标题】:Legend with transparent frame and non-transparent edge具有透明框架和不透明边缘的图例
【发布时间】:2020-02-15 16:55:14
【问题描述】:

在图例中设置透明度时:

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)) 适合我。您能否提供有关您面临的问题的更多信息?
  • 有趣。对我来说使用facecolor=(1, 1, 1, 0.1)facecolor=(1, 1, 1, 0.9) 没有区别。我正在使用 matplotlib v3.1.1。
  • 我明白了; 将是真正的问题。

标签: python matplotlib legend alpha


【解决方案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))

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 2013-01-24
    • 2012-08-15
    • 2017-12-18
    • 2015-11-16
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多