Hello,
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
···
Am 23.03.2017 um 14:38 schrieb vincent.adrien at gmail.com:
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
pylab_examples example code: legend_translucent.py — Matplotlib 1.3.0 documentation
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
Matplotlib-users Info Page