如何更改图例的边缘颜色和填充颜色

57

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

但是我需要问一下,如何在保持框架的同时更改背景颜色?有时我想要它开启并使用除白色以外的背景颜色。另外,是否有一种方法可以更改框架的颜色?使用上述代码,我原本期望只更改框架的颜色,而不是背景。

3个回答

55
你可以像这样分别设置边缘颜色和面颜色:
frame.set_facecolor('green')
frame.set_edgecolor('red')

在FancyBboxPatch下面有更多的信息,这里


46
使用matplotlib.pyplot库,plt.legend(facecolor='white', framealpha=1)能为你的图例添加一个不带透明度的白色背景。

10

除了Molly的方法外,您还可以使用linewidth将框架关闭:

frame.set_linewidth(0)

我在编写一个小的方便函数时使用了这种方法,该函数用于隐藏图例框,原因与您引用的相同。该函数名为adjust_legends,位于print_targeted_plots模块中,可从github获取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接