gpt4 book ai didi

python - pyqt5、matplotlib2 和 axes.hold 的弃用

转载 作者:太空宇宙 更新时间:2023-11-03 10:55:12 51 4
gpt4 key购买 nike

基于 https://gist.github.com/pklaus/3e16982d952969eb8a9a 中的演示代码为了将 matplotlib 图形嵌入到 qt GUI 中,我有以下代码:

# https://gist.github.com/pklaus/3e16982d952969eb8a9a
class MatplotlibCanvas(FigureCanvas):

"""Ultimately, this is a QWidget (as well as a FigureCanvasAgg, etc.)."""
def __init__(self, mystacker, spectrum_id, parent=None, width=5, height=4, dpi=100):
self.stacker = mystacker
self.spectrum_id = spectrum_id

fig = Figure(figsize=(width, height), dpi=dpi)
self.axes = fig.add_subplot(111)
# We want the axes cleared every time plot() is called
self.axes.hold(False)

self.compute_initial_figure()

FigureCanvas.__init__(self, fig)
self.setParent(parent)

FigureCanvas.setSizePolicy(self, QSizePolicy.Expanding, QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)

def compute_initial_figure(self):
spectrumplot.plot_spectrum(self.stacker, self.spectrum_id, self.axes)

但是对于新的 matplotlib 版本 2,我收到以下警告:

MatplotlibDeprecationWarning:axes.hold 已弃用。
有关详细信息,请参阅 API 更改文档 (http://matplotlib.org/api/api_changes.html)。

http://matplotlib.org/api/api_changes.html

The ‘hold’ keyword argument and all functions and methods related to it are deprecated, along with the ‘axes.hold’ rcParams entry. The behavior will remain consistent with the default hold=True state that has long been in place. Instead of using a function or keyword argument (hold=False) to change that behavior, explicitly clear the axes or figure as needed prior to subsequent plotting commands.

在我的案例中,“根据需要明确清除坐标轴或图形”的正确调用是什么?

最佳答案

从显示的代码中不清楚,此时您实际上需要 hold(False)

文档中所说的是,如果需要,您应该明确地清除坐标轴,而不是依赖于某些自动清除。 IE。在您想清除轴并删除其内容的任何时候使用 self.axes.clear()。您是否真的需要清除轴取决于您的使用情况。通常更新坐标区中的艺术家比清除坐标区并重新创建艺术家要干净得多。

(您可能想更新您的问题以包含更多关于您正在做什么的信息,以便有人判断您在什么时候需要它。)

关于python - pyqt5、matplotlib2 和 axes.hold 的弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42155430/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com