2015-06-11 2 views
2

Я пытаюсь понять, как лучше использовать легенду(), в частности, как использовать прокси-исполнителей. Я считаю, что Legend guide не хватает. Этот пост несколько похож на this one.Matplotlib Легенда руководства Основные примеры

Я использую Python 2.7.5 на Windows 7, matplotlib версии 1.2.1. Я написал этот код, который по существу представляют собой комбинацию из примеров в руководстве легенды:

import matplotlib.patches as mpatches 
import matplotlib.lines as mlines 
import matplotlib.pyplot as plt 

line_up, = plt.plot([1,2,3], label='Line 2') 
line_down, = plt.plot([3,2,1], label='Line 1') 

blue_line = mlines.Line2D([], [], color='blue', marker='*', 
         markersize=15, label='Blue stars') 
red_patch = mpatches.Patch(color='red', label='The red data') 
plt.legend([red_patch,blue_line]) 

plt.show() 

http://i.stack.imgur.com/E9jkA.jpg

Цвет этикетки легенды являются те, которые назначены в ручках, ни не они заплата и линия с звезды. Я попытался удалить и добавить строки, добавить и удалить запятые после строк и т. Д. Являются ли они лучшими ссылками для использования legend()? Любые другие советы по использованию прокси-исполнителей? Я не понимаю, почему примеры дают мне совершенно разные результаты ...

ответ

0

Я до сих пор используя matplotlib 1.2.1, поэтому я расскажу вам, что ks для меня. Я нахожу, что если передать объекты линии в legend(), мне также придется передавать эти метки отдельно. [Это также согласуется с документацией matplotlib для legened()]. Я слегка модифицирован свой пример, чтобы сделать это, и это, кажется, работает:

import matplotlib.patches as mpatches 
import matplotlib.lines as mlines 
import matplotlib.pyplot as plt 

line_up, = plt.plot([1,2,3], label='Line 2') 
line_down, = plt.plot([3,2,1], label='Line 1') 

blue_line = mlines.Line2D([], [], color='blue', marker='*', 
        markersize=15, label='Blue stars') 
red_patch = mpatches.Patch(color='red', label='The red data') 

lines = [blue_line, red_patch] 
labels = [line.get_label() for line in lines] 
plt.legend(lines, labels) 

plt.show() 

code output

2

Справочник по легенде was rewritten для совместимости с matplotlib версии 1.4.0 или новее. Ваша версия matplotlib (1.2.1) старше двух лет. Не удивляйтесь, если все, что показано в документах, не работает с такой старой версией.

Если вы обновляете версию, затем с помощью

plt.legend(handles=[red_patch,blue_line]) 

(как показано в Legend Guide) вместо

plt.legend([red_patch,blue_line]) 

дает

enter image description here

+0

Я получаю следующее сообщение об ошибке, когда я это делаю, «TypeError: __init __() получил несколько значений аргумента ключевых слов «ручками», и никакой фигуры. Я следовал инструкциям в связанном сообщении выше. – Eric

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