mi chiedevo la stessa cosa. Ecco cosa mi è venuto in mente per cambiare il colore del carattere nella legenda. Io non sono del tutto soddisfatto di questo metodo, dal momento che sembra un po 'goffo, ma sembra ottenere il lavoro fatto [Edit: vedi sotto per un modo migliore]:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
fig = plt.figure()
ax = plt.subplot(111)
colors = []
for i in xrange(5):
line, = ax.plot(x, i * x, label='$y = %ix$' % i)
colors.append(plt.getp(line,'color'))
leg = ax.legend()
for color,text in zip(colors,leg.get_texts()):
text.set_color(color)
plt.show()
2016 Edit:
In realtà, c'è un modo migliore. Puoi semplicemente scorrere le righe nella legenda, evitando di dover tenere traccia dei colori quando vengono tracciate le linee. Molto meno goffo. Ora, cambiare i colori della linea è fondamentalmente un one-liner (okay, in realtà è un doppio rivestimento). Ecco l'esempio completo:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
fig = plt.figure()
ax = plt.subplot(111)
for i in xrange(5):
ax.plot(x, i*x, label='$y = %ix$'%i)
leg = ax.legend()
# change the font colors to match the line colors:
for line,text in zip(leg.get_lines(), leg.get_texts()):
text.set_color(line.get_color())
plt.show()
2017 Edit: Infine, se davvero si desidera che il colore di testo invece di una linea (come suggerisce il titolo), allora si può sopprimere le righe della legenda utilizzando
leg = ax.legend(handlelength=0)