Is there while rcParams['legend.frameon'] = 'False'
a simple way to fill the legend area background with a given colour. More specifically I would like the grid not to be seen on the legend area because it disturbs the text reading.
The keyword framealpha
sounds like what I need but it doesn't change anything.
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()
I've also tried:
legend = plt.legend(frameon = 1) frame = legend.get_frame() frame.set_color('white')
but then I need to ask how can I change the background colour while keeping the frame on? Sometimes I want it ON with a background colour other than white. And also, is there a way of changing the colour of the frame? With the above code I was expecting to change the colour of the frame only, not the background.
To change the position of a legend in Matplotlib, you can use the plt. legend() function. The default location is “best” – which is where Matplotlib automatically finds a location for the legend based on where it avoids covering any data points.
To place a legend on the figure and to adjust the size of legend box, use borderpad=2 in legend() method.
To place the legend, use legend() method with location of the legend and store the returned value to set the color of the text. To set the color of the text, use set_color() method with green color.
You can set the edge color and the face color separately like this:
frame.set_facecolor('green') frame.set_edgecolor('red')
There's more information under FancyBboxPatch here.
Using matplotlib.pyplot, plt.legend(facecolor='white', framealpha=1)
will give your legend a white background without transparency.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With