13

我正在尝试使用suptitle打印标题,并且我想偶尔替换此标题。目前我正在使用:

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

其中 figure 是 matplotlib 图(canvas1 是 mplCanvas,但这不相关),并且 title 是 python 字符串。

目前,这可行,除了当我稍后再次运行此代码时,它只是将新文本打印在旧文本之上,导致标题混乱、不可读。

你如何替换旧suptitle的图形,而不仅仅是打印出来?

谢谢,

泰勒

4

3 回答 3

19

figure.suptitle返回一个matplotlib.text.Text实例。您可以保存它并设置新标题:

txt = fig.suptitle('A test title')
txt.set_text('A better title')
plt.draw() 
于 2012-05-11T22:52:45.253 回答
8

复活这个旧线程,因为我最近遇到了这个问题。在 figure.texts 中有一个对 suptitle 的原始设置返回的 Text 对象的引用。您可以使用它来更改原始文件,直到在 matplotlib 中修复它。

于 2012-09-16T19:02:57.723 回答
0

我有类似的问题。图形对象的替代方法显示旧标题(以前创建)的标题。这绝对是 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,它会为您修复它。

于 2019-07-26T10:12:12.270 回答