Pergunta

Eu tenho datapoints de diferentes classes que eu quero visualizar. Aqui é a imagem que eu recebo: http://imgur.com/1x97h

Há 3000 datapoints de 10 classes, 300 cada. Eles são concatenados em um único d série sobre cuja pedaços I ITERATE. Os rótulos são dadas em labels.

pylab.clf()
colors = (i + j for j in 'o<.' for i in 'bgrcmyk')
for l, c  in zip(labels, colors):
  start, stop = i * 300, (i + 1) * 300
  pylab.plot(d[0, start:stop], d[1, start:stop], c, label=l)

pylab.legend(loc='lower left')
pylab.show()

Alguém tem uma pista por que minha lenda é asneira?

Foi útil?

Solução

Isso ajudaria a ter um exemplo de auto-contido, possivelmente com dados confeccionados, que as pessoas possam executá-lo imediatamente. Aqui está um exemplo de auto-contido modificado a partir do que você postou que funciona bem para mim no ipython -pylab, com uma recente revisão svn de Matplotlib; Eu acho que alguns bugs lenda relacionada foram corrigidos recentemente.

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()

E aqui está o que eu recebo:

exemplo figura http://www.iki.fi/jks/tmp/legend .png

Assumindo que o bug está relacionado com o recurso de auto-lenda, você pode ser capaz de trabalhar em torno dele por ser explícito sobre o que você quer na legenda:

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()
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top