gpt4 book ai didi

python - matplotlib - 图对象没有属性 'plot' 。引用问题

转载 作者:行者123 更新时间:2023-12-01 08:53:07 27 4
gpt4 key购买 nike

我知道还有其他人在他们的特定背景下问这个问题,但这些答案都没有让我更接近弄清楚这一点。我正在尝试使用 matplotlib 中的类将绘图添加到图形中。

我试图让类将 Line2D 对象作为参数并对其进行一些解释 - 这是有效的。该类还注册了绘图窗口上鼠标单击事件的回调 - 这也有效。这是不起作用的:

fig, ax = plt.subplots()
series, = ax.plot(x_data, y_data)
classthing = MyClass(series)
plt.show()

这是正在实例化的类:

class MyClass:
def __init__(self, series):
self.series = series
self.cid = series.figure.canvas.mpl_connect('button_press_event', self)

def __call__(self, event):
self.series.figure.plot([xdata], [ydata])
self.series.figure.canvas.draw()

单击鼠标时,我想向单击的图形添加绘图。这与此处的示例非常相似:https://matplotlib.org/users/event_handling.html

这段代码成功创建了绘图和对象,但显然我没有从正确的引用中调用plot()方法,因为我在倒数第二行收到标题错误。仅给出其中的 Line2D 对象,如何正确引用绘图对象?我根本不具备 OOP 能力。

预先感谢您的帮助。

最佳答案

你不能既绘制斧头又再次使用它。代码中的 series 是一个 Line2D 对象,它没有属性 plot

您可以做的就是向您的类添加一个 ax 对象,如下所示:

class MyClass:
def __init__(self, series, fig):
self.series = series
self.figure = fig
self.cid = self.figure.canvas.mpl_connect('button_press_event', self)

def __call__(self, event):
self.series.plot([xdata], [ydata])
self.figure.canvas.draw()

fig, ax = plt.subplots()
series = ax
classthing = MyClass(series)
classthing(some_event) # call your class

现在,由于您将 ax 传递给 class,您的调用将会成功,您仍然需要传递 xdataydata 到你的电话,不过。

由于您将由于 Canvas 绘制而调用 figure,因此您还需要将其传递到您的对象中。

关于python - matplotlib - 图对象没有属性 'plot' 。引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52978338/

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