2013-05-29 2 views
3

Этот код:Добавление этикетки к контуру

import numpy as np 
import matplotlib.pyplot as plt 

plt.contourf(np.random.random((10,10)), label='my_label') 
plt.legend() 

производит это предупреждение:

warnings.warn ("Нет маркированные объекты не найдены.")

Кто-нибудь знает, как контур метки?
Я просто хочу комментировать автоматически создаваемые контуры внутри окна сюжета самым простым способом.

+0

Http: // matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.contourf делать примеры здесь, что вам нужно? Я смущен вашим использованием легенды и говорю, что вы хотите комментировать кривые. – tacaswell

+0

Это заполненные контуры. На вашем связанном примере это классическая легенда на контурных линиях. Я не хочу этого делать. Я хочу назвать сюжет, но не с 'title()', который будет отображаться вне окон графика, но внутри. Я думал попробовать с ярлыком, как в обычном сюжете, но он не работает. – theta

+0

ОК, я думаю, что могу сделать это с помощью функции 'annotate()', и тогда я отправлю это как ответ. – theta

ответ

2

Я использовал annotate() функцию, чтобы обозначить свой заполненный контур:

screenshot

В коде выше, вместо plt.legend() я использовал:

plt.annotate('my_label', (8, 1), backgroundcolor='w')

Таким образом, только дополнительное рассмотрение по сравнению с label параметром, заключается в том, что пользователь должен знать координаты, в которых будет размещен текст. Или я думаю.

Update: Как было отмечено в комментариях, пользователь может выбрать тип axes fraction для xycoords параметра и использовать относительные ссылки в диапазоне [0,1], чтобы установить обязательный параметр xy пункта:

plt.annotate('my_label', (.9, .1), xycoords='axes fraction', backgroundcolor='w')

+0

А, вообще не понял ваш вопрос;) Вы можете использовать единицы осей с аннотатом, http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.annotate посмотреть документ на kwarg 'xycoords' и 'textcoords' – tacaswell

+0

Да, поэтому я написал, что пользователю нужно знать координаты участка (форма массива), в то время как метка может быть размещена без таких соображений (например,« верхний левый »,« центр »,« лучший »и т. д.) – theta

+0

Вы используете координаты данных. Координаты осей идут от '[0, 0]' (внизу слева) до '[1, 1]' (верхний правый) и являются фракцией высоты и ширины осей. – tacaswell