我在test.py中有以下代码:

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)

当我在命令行中运行test.py时,“python test.py”,“button=%d,x=%d,y=%d,xdata=%f,ydata=%f”会在单击绘图时打印出来。
但是,结果没有打印在Jupyter笔记本上。
如何修复?
事先谢谢!

最佳答案

这将取决于您在Jupyter笔记本中使用的后端。
如果使用内联后端(即%matplotlib inline),交互式功能将无法工作,因为绘图只是PNG图像。
如果您使用笔记本后端(即%matplotlib notebook)交互功能确实有效,但问题是在哪里打印结果。因此,为了显示文本,可以将其添加到图中,如下所示

%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(10))
text=ax.text(0,0, "", va="bottom", ha="left")

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

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

python - jupyter笔记本中的canvas.mpl_connect-LMLPHP

关于python - jupyter笔记本中的canvas.mpl_connect,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43923313/

10-13 04:56