Месторасположение 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) 
  • Перекрытие полярного графика и графика рассеяния
  • Как установить размер шрифта оси Matplotlib Legend?
  • Инвертировать изображение, отображаемое imshow в matplotlib
  • Colormap для errorbars в графике разброса xy с использованием matplotlib
  • Как построить кривую ROC в Python
  • Можно ли создать диаграмму с этим очень конкретным фоном?
  • метки matplotlib prune tick
  • matplotlib: сделать знак плюса
  • Python - лучший язык программирования в мире.