Matplotlib suptitle覆盖旧标题打印问题

13

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

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

figure是一个matplotlib的图形对象(canvas1是一个mplCanvas,但这并不重要),title是一个Python字符串。

目前,这段代码可以正常运行,但问题是当我稍后再次运行此代码时,它只会将新文本打印在旧文本之上,导致标题变得混乱、难以阅读。

如何替换图表的旧suptitle而不是仅仅覆盖它?

谢谢,

Tyler

3个回答

19

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

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

这个不起作用...仍然存在同样的错误,它只是在旧文本上呈现新文本。 - tylerthemiler
啊,我差不多做过这个。我当时在使用mpl_canvases。你可以用这个方法,只是要把self.mpl_canvas_obj.figure.suptitle('')保存到某个地方,然后将其作为txt字段使用。 - tylerthemiler

8

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


0

我遇到了类似的问题。 图形对象的方法suptitle显示旧标题(之前创建的)上方的标题。这明显是matplotlib中的一个错误,特别是因为您可以在matplotlib包的figure.py中找到此代码:

        (...)

        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

幸运的是,这个 bug 存在于 matplotlib 版本 1.2.1 中,但后来被修复了(在 2.2.4 中不再存在)。尝试更新 matplotlib,它会为您解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接