Это поможет создать автономный пример, возможно, с готовыми данными, чтобы люди могли сразу запустить его. Вот самодостаточный пример, модифицированный из того, что вы опубликовали, который отлично подходит для меня в ipython -pylab
, с недавней версией svn Matplotlib; Я думаю, что некоторые ошибки, связанные с легендой, были исправлены в последнее время.
colors = (i + j for j in 'o<.' for i in 'bgrcmyk')
labels = 'one two three four five six seven eight nine ten'.split()
x = linspace(0, 2*pi, 3000)
d = (2+random((2,3000))) * c_[sin(x), cos(x)].T
for i, l, c in zip(range(10), labels, colors):
start, stop = i * 300, (i + 1) * 300
plot(d[0, start:stop], d[1, start:stop], c, label=l)
legend(loc='lower left')
show()
И вот что я получаю:
example figure http://www.iki.fi/jks/tmp/legend.png
Предполагая, что ошибка связана с функцией автоматического легенды, вы можете быть в состоянии работать вокруг него, будучи явным о том, что вы хотите в Легенда:
colors = (i + j for j in 'o<.' for i in 'bgrcmyk')
labels = 'one two three four five six seven eight nine ten'.split()
x = linspace(0, 2*pi, 3000)
d = (2+random((2,3000))) * c_[sin(x), cos(x)].T
lg = []
for i, l, c in zip(range(10), labels, colors):
start, stop = i * 300, (i + 1) * 300
handle = plot(d[0, start:stop], d[1, start:stop], c, label=l)
lg.append(handle)
legend(lg, labels, loc='lower left')
show()
Я правильно понимаю, что в легенде должно быть только 10 предметов? –
Да, вы правы. – bayer