Ответ 1
Нет, для этого нет возможности встроить в 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()
Btw, если вы используете ipython
, вы можете легко просмотреть источник функции из своего интерактивного сеанса с помощью
%psource c.clabel
или непосредственно вызывать ваш $EDITOR
в файле, если он определен с помощью
%edit c.clabel