2010-07-21 62 views
3

我正在編寫劇情的幾點。我也試圖從這些方面創造一個傳奇。總結我的劇本,我正在繪製幾種'類型'的點(稱之爲'a','b','c')。這些點有不同的顏色和形狀:'a' - '去''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