matplotlib传奇背景颜色

时间:2013-11-08 16:00:32

标签: 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 = 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 个答案:

答案 0 :(得分:27)

您可以分别设置边缘颜色和面部颜色:

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

FancyBboxPatch here下有更多信息。

答案 1 :(得分:7)

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

frame.set_linewidth(0)

我在一个小的便利函数中使用了这个方法,我写的是为了隐藏图例框架,原因与你引用的相同。该函数在adjust_legends模块from github中称为print_targeted_plots

答案 2 :(得分:1)

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