52

是否有rcParams['legend.frameon'] = 'False'一种简单的方法可以用给定的颜色填充图例区域背景。更具体地说,我希望在图例区域不要看到网格,因为它会干扰文本阅读。

关键字framealpha听起来像我需要的,但它不会改变任何东西。

import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['legend.frameon'] = 'False'
plt.plot(range(5), label = u"line")
plt.grid(True)
plt.legend(loc = best)
plt.show()

我也试过:

legend = plt.legend(frameon = 1)
frame = legend.get_frame()
frame.set_color('white')

但是我需要问如何在保持框架打开的同时更改背景颜色?有时我希望它使用白色以外的背景颜色。还有,有没有办法改变框架的颜色?使用上面的代码,我希望只更改框架的颜色,而不是背景。

4

3 回答 3

49

您可以像这样分别设置边缘颜色和面颜色:

frame.set_facecolor('green')
frame.set_edgecolor('red')

FancyBboxPatch 下有更多信息

于 2013-11-08T16:17:50.167 回答
33

使用 matplotlib.pyplot,plt.legend(facecolor='white', framealpha=1)将为您的图例提供不透明的白色背景。

于 2019-08-10T08:40:27.030 回答
8

除了Molly的方法,您还可以使用线宽关闭框架:

frame.set_linewidth(0)

我在我写的一个小便利函数中使用了该方法来隐藏图例框架,原因与您引用的相同。该函数在githubadjust_legends提供的print_targeted_plots模块中调用。

于 2013-11-08T21:37:26.310 回答