【问题标题】:Matplotlib suptitle prints over old titleMatplotlib 字幕打印在旧标题上
【发布时间】:2012-05-20 12:14:02
【问题描述】:

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

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

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

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

你如何替换旧的suptitle,而不是直接打印出来?

谢谢,

泰勒

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

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

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

    【讨论】:

    • 这不起作用......仍然存在相同的错误,它只是在旧文本上呈现新文本。
    • 啊,我或多或少是这样做的。我正在使用 mpl_canvases。使用它,除了将 self.mpl_canvas_obj.figure.suptitle('') 保存在某处,然后将其用作 txt 字段。
    【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-03
        相关资源
        最近更新 更多