2010-07-21 3 views
3

Я пишу сценарий, который имеет несколько точек графика. Я также пытаюсь создать легенду из этих точек. Чтобы подвести итог моему сценарию, я рисую несколько «типов» точек (назовите их «a», «b», «c»). Эти точки имеют разные цвета и формы: 'a' - 'go' 'b' - 'rh' 'c' - 'k ^'.Помощник легенды Matplotlib

Это сокращенный вариант соответствующих частей моего сценария:

lbl = #the type of point x,y is (a,b,c) 
for x,y in coords: 
    if lbl in LABELS: 
     plot(x, y, color) 
    else: 
     LABELS.add(lbl) 
     plot(x, y, color, label=lbl) 
legend() 

Что я делаю здесь просто черчения кучу точек и присвоение метки к ним. Тем не менее, я узнал, добавляю ли я метку к каждой точке, тогда легенда будет содержать запись для каждой точки. Мне нужна только одна запись для каждого типа точки (a, b, c). Итак, я изменил свой сценарий, чтобы выглядеть как выше. Есть лучший способ сделать это? Если у меня есть миллион разных типов точек, тогда структура данных LABELS (набор) займет много места.

ответ

2

Группа x и y в зависимости от типа точки. Plot все точки одного и того же типа с одним вызовом plot:

import pylab 
import numpy as np 

lbl=np.array(('a','b','c','c','b','a','b','c','a','c')) 
x=np.random.random(10) 
y=np.random.random(10) 
for t,color in zip(('a','b','c'),('go','rh','k^')): 
    pylab.plot(x[lbl==t],y[lbl==t],color,label=t) 
pylab.legend() 
pylab.show() 

alt text

Смежные вопросы