<p>我也在想同样的事。这是我想出的改变传奇字体颜色的方法。我对这种方法并不完全满意,因为它看起来有点笨拙,但似乎完成了工作[编辑:查看下面的更好方法]:</p>
<pre><code>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()
</code></pre>
<p><img src="https://i.stack.imgur.com/lphOP.png" alt="the colorful results"/></p>
<p>2016年编辑:</p>
<p>其实,还有更好的办法。您只需迭代图例中的线,这样就不必在绘制线时跟踪颜色。更别说笨重了。现在,改变线条颜色基本上是一行(好吧,实际上是两行)。下面是完整的示例:</p>
<pre><code>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()
</code></pre>
<p>2017年编辑:最后,如果你真的想要一行的彩色文本<em>而不是</em>(如标题所示),那么你可以使用</p>
<pre><code> leg = ax.legend(handlelength=0)
</code></pre>