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

그룹 xy 포인트 유형에 따라. 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