[Matplotlib-users] Making a solid legend

Florian Lindner mailinglists at xgm.de
Thu Mar 23 10:10:25 EDT 2017


Hello,


Am 23.03.2017 um 14:38 schrieb vincent.adrien at gmail.com:
> 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'.

Oh, cool, that is what I was looking for too.

I found out that my original issue is also related to twinx:

import matplotlib.pyplot as plt

fig, ax1 = plt.subplots()
ax1.plot([0, 1], [0, 2], label = "Plot 1 with some more text")
ax1.legend(framealpha = 1, bbox_to_anchor = (0.1, 1))

ax2 = ax1.twinx()
ax2.plot([0, 1], [2.2, 0], "--", label = "Plot 2 with some more text")
ax2.legend(framealpha = 1, bbox_to_anchor = (1.1,1))

plt.grid()
plt.show()

The second legend is over the right y-axis, the first legend is not over the left y-axis.

Can I set legends in a way they are always above any element?

Thanks,
Florian



> 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