2009-05-16 34 views
5

Tôi có các điểm dữ liệu của các lớp khác nhau mà tôi muốn hình dung. Đây là hình ảnh tôi nhận được: http://imgur.com/1x97hMatplotlib: Chú giải không được hiển thị đúng cách

Có 3000 điểm dữ liệu của 10 lớp, mỗi 300 lớp. Chúng được nối trong một mảng duy nhất d qua các phần mà tôi lặp lại. Các nhãn được đưa ra trong 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() 

Có ai là lý do khiến chú thích của tôi bị hỏng không?

+0

Tôi hiểu chính xác rằng chỉ có 10 mục được liệt kê trong chú giải? –

+0

Có, bạn đã đúng. – bayer

Trả lời

3

Nó sẽ giúp có một ví dụ khép kín, có thể với dữ liệu được tạo sẵn, để mọi người có thể chạy ngay lập tức. Dưới đây là một ví dụ khép kín được sửa đổi từ những gì bạn đã đăng hoạt động tốt cho tôi trong ipython -pylab, với bản sửa đổi svn gần đây của Matplotlib; Tôi nghĩ rằng một số lỗi liên quan đến truyền thuyết đã được sửa gần đây.

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

Và đây là những gì tôi nhận được:

example figure http://www.iki.fi/jks/tmp/legend.png

Giả sử các lỗi có liên quan đến tính năng tự động huyền thoại, bạn có thể có thể làm việc xung quanh nó bằng cách rõ ràng về những gì bạn muốn trong truyền thuyết:

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() 
Các vấn đề liên quan