[Matplotlib-users] Making a solid legend

vincent.adrien at gmail.com vincent.adrien at gmail.com
Thu Mar 23 09:38:08 EDT 2017


Hello Florian,

A `get_frame()` call seems to be missing in your example. Try with
```
leg.get_frame().set_facecolor('r')
```

Note that you can also directly set this when calling `legend`:
```
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1], label='Plot 1')

leg = ax.legend(loc='upper left', framealpha=1.0, facecolor='red')

ax.grid()
plt.show()
```

If you want to fix this for every plot you do, you may want to tweak your
matplotlibrc file or at least the related rcParams in your scrpit, which are
'legend.framecolor' and 'legend.framealpha'.

Best regards,
Adrien

On 23/03/2017 14:24, Florian Lindner wrote:
> Hello,
> 
> I try to make the legend non-translucent, having a solid color and laying above the plot itself.
> 
> That's what I try:
> 
> 
> import matplotlib.pyplot as plt
> 
> fig, ax1 = plt.subplots()
> ax1.plot([0, 1], [0, 2], label = "Plot 1")
> 
> leg = ax1.legend(loc = 1)
> leg.get_frame().set_facecolor("r")
> leg.set_alpha(0)
> 
> plt.grid()
> plt.show()
> 
> 
> (you may have to pan the plot)
> 
> Taken from:
> http://matplotlib.org/examples/api/legend_demo.html
> http://matplotlib.org/1.3.0/examples/pylab_examples/legend_translucent.html
> 
> The set_alpha seems to have no effect at all. facecolor works, but it is always translucent.
> 
> Thanks,
> Florian
> 
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users at python.org
> https://mail.python.org/mailman/listinfo/matplotlib-users
> 



More information about the Matplotlib-users mailing list