Python matplotlib-地物对象没有属性';绘图';。参考问题
我知道还有其他人在他们特定的环境中问这个问题,但这些答案都没有让我更接近于弄明白这一点。我正在尝试使用matplotlib中的一个类向地物添加绘图 我试图让类将Line2D对象作为参数,并对其进行一些解释—这很有效。该类还注册了对绘图窗口上鼠标单击事件的回调-这也起作用。以下是不起作用的:Python matplotlib-地物对象没有属性';绘图';。参考问题,python,matplotlib,Python,Matplotlib,我知道还有其他人在他们特定的环境中问这个问题,但这些答案都没有让我更接近于弄明白这一点。我正在尝试使用matplotlib中的一个类向地物添加绘图 我试图让类将Line2D对象作为参数,并对其进行一些解释—这很有效。该类还注册了对绘图窗口上鼠标单击事件的回调-这也起作用。以下是不起作用的: fig, ax = plt.subplots() series, = ax.plot(x_data, y_data) classthing = MyClass(series) plt.show() 下面是正
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()
在鼠标单击时,我想向单击的图形添加一个绘图。这与这里的示例非常相似:
这段代码成功地创建了plot和对象,但显然我没有从正确的引用调用plot()方法,因为我在倒数第二行得到了title错误。如果仅指定打印对象中的Line2D对象,如何正确引用该打印对象?我不能胜任OOP
提前感谢您的帮助。您不能同时绘制
ax
并再次使用它。代码中的系列
是一个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
传递给类
,因此您的呼叫将成功,但仍然需要将xdata
和ydata
传递给您的呼叫
由于画布绘制,您将调用
figure
,因此还需要将其传递到对象中。您不在图形上绘图。你在图形中的轴上绘图。谢谢你的回答-我只需将ax传递到类中就可以让它工作。关于面向事件的Python是如何工作的,我没有了解很多。这个类的目的是在继续执行之前从用户那里收集一些输入数据,但是现在,即使在类等待输入时,脚本也会立即完成。我需要找出如何强制脚本等待回调完成x次,但我认为这是另一个问题。尝试async
——但这将是一个更大的主题