2013-12-05 3 views
0

У меня есть вызов вызова функции. У меня есть 2 списка, один с координатами x второй с координатами y. Я делаю сюжет, и я хочу написать в сюжете координаты x, y. Я вижу, что аннотация может быть ответом, но он не может получить список. Я пытаюсь сделать это:Используйте аннотацию, указав список python matplotlib

def draw(LuxCoordinates, finalPix, verName, GraphNum): 

    xy = (LuxCoordinates,finalPix) 
    plt.axes([0.1, 0.1, 0.6, 0.8]); 

    plt.xlim(0,3100,); 
    plt.ylim(0,100,100); 

    plt.xticks(arange(0,3500,350)) #spaces of x axis 
    plt.yticks(arange(0,100,10)) #spaces of y axis 

    if GraphNum == 1: 
     plt.plot(LuxCoordinates, finalPix, 'r', label=verName); 
    if GraphNum == 2: 
     plt.plot(LuxCoordinates, finalPix, 'g', label=verName); 
    if GraphNum == 3: 
     plt.plot(LuxCoordinates, finalPix, 'b', label=verName);  

    legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)  
    plt.scatter(LuxCoordinates, finalPix, linewidths=1) 

    **for i, txt in enumerate(xy): 
     plt.annotate(txt, (LuxCoordinates[i],finalPix[i]))** 
    plt.grid(axis) 
    plt.xlabel('Ambient', color='r'); 
    plt.ylabel('Depth Grows', color='r'); # grayscale color 
    plt.title(PngName, color='b'); 
    savefig(PngName+'_'+date+'_'+currentime+'.png') 

Но я получаю это: The plot

И Увеличить: Zoom In Вы можете видеть, что-то написать, но все это список на первая точка, я хочу, чтобы каждый x, y был написан рядом с точкой отдельно, поэтому первая точка на синем графике будет 0,96,6, а в зеленом - 0, 93,54 (вы можете увидеть 2 списка)

Может кто-нибудь, пожалуйста, помогите мне с этим? Спасибо!

ответ

0

Ваш xy имеет два списка, чтобы перечислять, а не один для каждой точки, как вы ожидаете. Попробуйте заменить xy = (LuxCoordinates,finalPix) на xy = zip(LuxCoordinates,finalPix). В качестве альтернативы, если вы используете xy в своей текущей форме в другом месте, вы можете перенести массив в свой нумерованный вызов:

for i, txt in enumerate(np.transpose(xy)): 
Смежные вопросы