Месторасположение Matplotlib Contour Clabel

Я хотел бы контролировать расположение лейблов matplotlib на контурном графике, но без использования ручного = True flag в clabel. Например, я хотел бы указать координату x и создать метки в точках, проходящих через эту строку. Я вижу, что вы можете получить расположение отдельных меток, используя get_position (), но я застрял в этом. Любая помощь будет принята с благодарностью. Благодаря!

2 Solutions collect form web for “Месторасположение Matplotlib Contour Clabel”

Нет, нет никакого способа встроить в matplotlib, чтобы сделать это. Предполагается, что вы либо живете с местами по умолчанию, либо полностью интерактивны с помощью руководства и с помощью мыши.

Возможно, вы захотите записать это как отчет об ошибке вверх, чтобы они могли улучшить свои алгоритмы.

Для этого есть несколько вариантов. Первый – программно разместить текст на фигуре контура. Таким образом вы не сможете надежно удалить строки под текстом. Предполагая, что у вас есть контур c вы можете найти контурные линии в c.collections . Для каждой линии контура вызовите get_paths и поместите свой текст на этот путь.

Другой вариант – заменить код для ручного размещения (в matplotlib.contour.BlockingContourLabeler ) или настроить код, который найдет позиции метки (в matplotlib.contour.locate_label ), но обе функции довольно плотные. Если вы можете найти рабочую замену для locate_label просто перезапишите старый метод в locate_label построения

 def your_locate_label(self, linecontour, labelwidth): # some magic pass ar = np.array([[1,0], [0,1]] c = matplotlib.contour(ar) c.locate_label = your_locate_label c.clabel() 

Кстати, если вы используете ipython вы можете легко просмотреть источник функции из своего интерактивного сеанса с помощью

 %psource c.clabel 

или напрямую вызывать свой файл $EDITOR в файле, он определен с помощью

 %edit c.clabel 

Да, теперь есть способ контролировать расположение ярлыков! https://github.com/matplotlib/matplotlib/pull/642

 plt.figure() CS = plt.contour(X, Y, Z) manual_locations = [(-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)] plt.clabel(CS, inline=1, fontsize=10, manual=manual_locations) 
Interesting Posts

Наиболее эффективный способ переназначения значений NaN в массиве numpy

Извлечь день года и юлианский день с даты строки в python

Как запустить скрипт Tcl в папке на Python?

Scipy map_ согласовывает билинейную интерполяцию по сравнению с интерполяцией интерполяции и интерполяции IDL

Продолжить чтение файла с позиции, где он был оставлен

Вызов методов класса суперкласса в Python

from reportlab.platypus import ListFlowable, ListItem не работает

Установка модуля python «rpy2» после установки Enthought Canopy

Функциональное дополнение / расширение

Полученная ошибка «Не авторизовано для доступа к этому ресурсу / api» при попытке использовать API Google Directory и аутентификацию учетной записи службы

Как получить имя / файл скрипта из файла sitecustomize.py?

ArgumentParser: дополнительный аргумент с дополнительным значением

Печать в одной строке динамически

Django Передача параметров пользовательской формы в форму

Как вы получаете строку запроса в Flask?

Python - лучший язык программирования в мире.