Подтвердить что ты не робот

Matplotlib suptitle печатает над старым заголовком

Я пытаюсь использовать suptitle для печати заголовка, и я хочу, чтобы эта замена была заменена соответствующим образом. В настоящее время я использую:

self.ui.canvas1.figure.suptitle(title)

где фигура - фигура matplotlib (canvas1 - mplCanvas, но это не имеет значения), а title - строка python.

В настоящее время это работает, за исключением того факта, что, когда я снова запустил этот код, он просто печатает новый текст поверх старого, в результате чего появляется загорелый, нечитаемый заголовок.

Как вы заменяете старый suptitle фигуры вместо того, чтобы просто печатать?

Спасибо,

Тайлер

4b9b3361

Ответ 1

figure.suptitle возвращает экземпляр matplotlib.text.Text. Вы можете сохранить его и установить новый заголовок:

txt = fig.suptitle('A test title')
txt.set_text('A better title')
plt.draw() 

Ответ 2

Возобновить этот старый поток, потому что я недавно столкнулся с этим. Существует ссылка на объект Text, возвращенный исходной настройкой suptitle в figure.texts. Вы можете использовать это, чтобы изменить оригинал, пока это не будет зафиксировано в matplotlib.

Ответ 3

У меня была похожая проблема. Метод метки объекта рисунка показывает заголовок поверх старого заголовка (созданного ранее). Это определенно ошибка в matplotlib. Тем более, что вы можете найти этот код в figure.py (часть пакета matplotlib):

        (...)

        sup = self.text(x, y, t, **kwargs)
        if self._suptitle is not None:
            self._suptitle.set_text(t)
            self._suptitle.set_position((x, y))
            self._suptitle.update_from(sup)
        else:
            self._suptitle = sup
        return self._suptitle

К счастью, эта ошибка присутствует в matplotlib версии 1.2.1, но позже была исправлена (в 2.2.4 она больше не присутствует). Попробуйте обновить matplotlib, он исправит это за вас.