我在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,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43923313/