Existe-t-il un moyen de modifier la couleur de police de la légende dans un tracé matplotlib?
Surtout dans les cas où l'arrière-plan de l'intrigue est sombre, le texte noir par défaut dans la légende est difficile ou impossible à lire.
call Legend.get_texts()
obtiendra une liste d'objets Text dans l'objet Legend:
import pylab as pl
pl.plot(randn(100), label="randn")
l = legend()
for text in l.get_texts():
text.set_color("red")
Vous pouvez également le faire avec setp ():
import pylab as plt
leg = plt.legend(framealpha = 0, loc = 'best')
for text in leg.get_texts():
plt.setp(text, color = 'w')
cette méthode vous permet également de définir la taille de police et n'importe quel nombre d'autres propriétés de police sur une seule ligne (répertoriée ici: http://matplotlib.org/users/text_props.html )
exemple complet:
import pylab as plt
x = range(100)
y1 = range(100,200)
y2 = range(50,150)
fig = plt.figure(facecolor = 'k')
ax = fig.add_subplot(111, axisbg = 'k')
ax.tick_params(color='w', labelcolor='w')
for spine in ax.spines.values():
spine.set_edgecolor('w')
ax.plot(x, y1, c = 'w', label = 'y1')
ax.plot(x, y2, c = 'g', label = 'y2')
leg = plt.legend(framealpha = 0, loc = 'best')
for text in leg.get_texts():
plt.setp(text, color = 'w')
plt.show()
Car plt.setp
diffuse sur des itérables, vous pouvez également modifier la couleur du texte sur une seule ligne:
# Show some cool graphs
legend = plt.legend()
plt.setp(legend.get_texts(), color='w')
La dernière ligne appliquera la couleur à tous les éléments de la collection de textes.