gpt4 book ai didi

python - 事件处理 : Matplotlib's Figure() and pyplot's figure()

转载 作者:太空狗 更新时间:2023-10-30 02:43:50 24 4
gpt4 key购买 nike

http://matplotlib.org/users/event_handling.html 中所述下面的示例代码工作正常

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(10))

def onclick(event):
print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
event.button, event.x, event.y, event.xdata, event.ydata)

cid = fig.canvas.mpl_connect('button_press_event', onclick)

但是为什么

from matplotlib.figure import Figure

fig = Figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(10))

def onclick(event):
print 'button=%d, x=%d, y=%d, xdata=%f, ydata=%f'%(
event.button, event.x, event.y, event.xdata, event.ydata)

cid = fig.canvas.mpl_connect('button_press_event', onclick)

不行(虽然基本一样)?错误是

AttributeError: 'NoneType' object has no attribute 'mpl_connect'

这让我很困惑,因为

type(fig)

在两种情况下都给出了预期的相同结果:

<class 'matplotlib.figure.Figure'>

最佳答案

那是因为当您使用 Figure() 创建独立的 Figure 实例时, Canvas 不会自动设置,您必须使用方法 - fig.set_canvas() 设置 Canvas .由于您没有这样做,fig.canvasNone,当您尝试 - fig.canvas.mpl_connect 时,您得到了 AttributeError .

但是,当您使用 pyplot 并使用 plt.figure() 获取图形时,它会为您创建 Canvas 。如果您想知道在哪里,然后 matplotlib.pyplot.figure() 在内部使用 matplotlib.backend.new_figure_manager() 来创建图形,然后(取决于后端)创建图形,gtk 示例可用 here - 第 99 行 -

canvas = FigureCanvasGTK(figure)

关于python - 事件处理 : Matplotlib's Figure() and pyplot's figure(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933393/

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