Нет, в matplotlib нет способа сделать это.Предполагается, что вы либо будете жить с местами по умолчанию, либо будете полностью интерактивными с руководством и с помощью мыши.
Возможно, вы захотите подать это как отчет об ошибке в апстриме, чтобы они могли улучшить свои алгоритмы.* Есть несколько вариантов, чтобы обойти это.Первый заключается в программном размещении текста на контурной фигуре.Вы не сможете надежно удалить строки под текстом таким образом.Предполагая, что у вас есть контур c
, вы можете найти контурные линии в c.collections
.Для каждой линии контура вызовите get_paths
и поместите текст в этот путь.
Другой вариант - заменить код для ручного размещения (в matplotlib.contour.BlockingContourLabeler
) или настроить код, который находит позиции меток (в matplotlib.contour.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