Python 如何在matplotlib中更改图例edgecolor和facecolor

Python 如何在matplotlib中更改图例edgecolor和facecolor,python,matplotlib,Python,Matplotlib,当rcParams['legend.frameon']='False'时,是否有一种用给定颜色填充图例区域背景的简单方法。更具体地说,我不希望在图例区域看到网格,因为它会干扰文本阅读 关键字framealpha听起来像我需要的,但它没有改变任何东西 import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams['legend.frameon'] = 'False' plt.plot(range(5), label =

当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')

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

您可以单独设置边缘颜色和面部颜色,如下所示:

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

FancyBoxPatch下有更多信息

除了Molly的方法之外,您还可以使用线宽关闭帧:

frame.set_linewidth(0)

我在我编写的一个小函数中使用了这种方法来隐藏图例框架,原因与您引用的相同。该功能在可用的
打印目标图
模块中被称为
adjust_legends

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