Python [matplotlib]:在Jupyter%matplotlib笔记本上使用ginput
我想在Jupyter上使用matplotlib方法“ginput”,使用“%matplotlib notebook”,但它不起作用。这是你看到的。 如果我在Spyder上复制并通过该代码,那么它可以工作,但是如果我将其粘贴到Jupyter上,那么我会得到以下错误消息Python [matplotlib]:在Jupyter%matplotlib笔记本上使用ginput,python,matplotlib,jupyter-notebook,spyder,Python,Matplotlib,Jupyter Notebook,Spyder,我想在Jupyter上使用matplotlib方法“ginput”,使用“%matplotlib notebook”,但它不起作用。这是你看到的。 如果我在Spyder上复制并通过该代码,那么它可以工作,但是如果我将其粘贴到Jupyter上,那么我会得到以下错误消息 Please click --------------------------------------------------------------------------- NotImplementedError
Please click
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-24-50d3ac899b10> in <module>()
7 plt.plot(t, np.sin(t))
8 print("Please click")
----> 9 x = plt.ginput(3)
10 print("clicked", x)
11 plt.show()
C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\pyplot.pyc in ginput(*args, **kwargs)
709 If *timeout* is negative, does not timeout.
710 """
--> 711 return gcf().ginput(*args, **kwargs)
712
713
C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\figure.pyc in ginput(self, n, timeout, show_clicks, mouse_add, mouse_pop, mouse_stop)
1663 mouse_stop=mouse_stop)
1664 return blocking_mouse_input(n=n, timeout=timeout,
-> 1665 show_clicks=show_clicks)
1666
1667 def waitforbuttonpress(self, timeout=-1):
C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\blocking_input.pyc in __call__(self, n, timeout, show_clicks)
292 self.clicks = []
293 self.marks = []
--> 294 BlockingInput.__call__(self, n=n, timeout=timeout)
295
296 return self.clicks
C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\blocking_input.pyc in __call__(self, n, timeout)
115 try:
116 # Start event loop
--> 117 self.fig.canvas.start_event_loop(timeout=timeout)
118 finally: # Run even on exception like ctrl-c
119 # Disconnect the callbacks
C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\backends\backend_nbagg.pyc in start_event_loop(self, timeout)
192
193 def start_event_loop(self, timeout):
--> 194 FigureCanvasBase.start_event_loop_default(self, timeout)
195
196 def stop_event_loop(self):
C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\backend_bases.pyc in start_event_loop_default(self, timeout)
2443 self._looping = True
2444 while self._looping and counter * timestep < timeout:
-> 2445 self.flush_events()
2446 time.sleep(timestep)
2447 counter += 1
C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\backend_bases.pyc in flush_events(self)
2388 backends with GUIs.
2389 """
-> 2390 raise NotImplementedError
2391
2392 def start_event_loop(self, timeout):
NotImplementedError:
请点击
---------------------------------------------------------------------------
NotImplementedError回溯(最后一次调用)
在()
7 plt.图(t,np.sin(t))
8打印(“请点击”)
---->9 x=plt.ginput(3)
10打印(“点击”,x)
11 plt.show()
ginput中的C:\Users\fedel\Anaconda2c\lib\site packages\matplotlib\pyplot.pyc(*args,**kwargs)
709如果*timeout*为负值,则不超时。
710 """
-->711返回gcf().ginput(*args,**kwargs)
712
713
C:\Users\fedel\Anaconda2c\lib\site packages\matplotlib\figure.pyc in ginput(self、n、超时、显示单击、鼠标添加、鼠标弹出、鼠标停止)
1663鼠标停止=鼠标停止)
1664返回阻塞鼠标输入(n=n,超时=timeout,
->1665显示点击次数=显示点击次数)
1666
1667 def waitforbuttonpress(自身,超时=-1):
C:\Users\fedel\Anaconda2c\lib\site packages\matplotlib\blocking\u input.pyc in\u调用(self,n,timeout,show\u点击)
292个self.clicks=[]
293自我标记=[]
-->294阻塞输入。调用(self,n=n,timeout=timeout)
295
296返回self.clicks
C:\Users\fedel\Anaconda2c\lib\site packages\matplotlib\blocking\u input.pyc in\u调用(self,n,超时)
115尝试:
116#启动事件循环
-->117 self.fig.canvas.start\u event\u循环(超时=超时)
118最后:#即使在异常情况下运行,如ctrl-c
119#断开回调
C:\Users\fedel\Anaconda2c\lib\site packages\matplotlib\backends\backend\backend\u nbagg.pyc在开始\u事件\u循环中(self,超时)
192
193 def start_事件_循环(自身,超时):
-->194 FigureCanvabase.start\u事件\u循环\u默认值(自身,超时)
195
196 def停止事件循环(自):
C:\Users\fedel\Anaconda2c\lib\site packages\matplotlib\backend\u base.pyc in start\u event\u loop\u default(self,timeout)
2443自循环=真
2444自循环和计数器*时间步<超时时:
->2445自我刷新事件()
2446时间。睡眠(时间步)
2447计数器+=1
C:\Users\fedel\Anaconda2c\lib\site packages\matplotlib\backend\u base.pyc in flush\u事件(self)
2388个带有GUI的后端。
2389 """
->2390未执行的提升错误
2391
2392 def启动事件循环(自身,超时):
未实现错误:
您建议我如何使“ginput”方法在Jupyter上工作?因为我只是在玩同一个示例,起初无法使其工作(尽管存在不同的问题,但从未得到具体的错误消息),以下是最终对我有效的方法: 添加
import matplotlib
matplotlib.use('TkAgg')
在
import matplotlib.pyplot as plt
然后在单独的窗口中打开绘图,该窗口在交互结束时关闭
由于我希望在较长的脚本中进行最终的绘图交互,我希望所有其他绘图都以内联方式显示,但交互绘图必须在单独的窗口中打开,因此我的脚本现在具有以下格式:
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
%matplotlib inline
# some plots
%matplotlib qt
# the interactive plot
%matplotlib inline
# the other plots
我在网上找到了很多不同的东西,但只有在这种组合中,它才能满足我的需要;) 由于我只是在玩同一个示例,起初无法让它工作(虽然有不同的问题,但从未收到具体的错误消息),以下是最终对我有效的方法: 添加
import matplotlib
matplotlib.use('TkAgg')
在
import matplotlib.pyplot as plt
然后在单独的窗口中打开绘图,该窗口在交互结束时关闭
由于我希望在较长的脚本中进行最终的绘图交互,我希望所有其他绘图都以内联方式显示,但交互绘图必须在单独的窗口中打开,因此我的脚本现在具有以下格式:
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
%matplotlib inline
# some plots
%matplotlib qt
# the interactive plot
%matplotlib inline
# the other plots
我在网上找到了很多不同的东西,但只有在这种组合中,它才能满足我的需要;) 正如错误类型所表明的那样,似乎还没有为笔记本电脑的后端实现
ginuput
,因为我记得我能够在Jupyter上使用ginput,但只有在浏览器外绘图时。现在我不知道从那时起发生了什么变化,但我不能再这样做了。此外,如果我在Juputer上键入plt.ginput(),我得到的是“”。这意味着ginput在某些方面是存在的,但它不起作用运行jupyter中的运行很好。该问题仅在使用%matplotlib inline
或%matplotlib notebook
时出现,因为这些后端显然尚未(尚未)实现ginput
功能。因此,该问题可以用不同的方式表述:如何在Jupyter上的浏览器外生成绘图?我记得我只需键入“%matplotlib notebook”就可以完成这项工作,但现在有些事情发生了变化,绘图从未从浏览器中退出。根据错误类型,将后端设置为正常GUI(例如QT4、Tk等),似乎还没有为笔记本电脑后端实现ginuput
,因为我记得我可以在Jupyter上使用ginput,但只有在浏览器外绘图时才使用。现在我不知道从那时起发生了什么变化,但我不能再这样做了。此外,如果我在Juputer上键入plt.ginput(),我得到的是“”。这意味着ginput在某些方面是存在的,但它不起作用运行jupyter中的运行很好。该问题仅在使用%matplotlib inline
或%matplotlib notebook
时出现,因为这些后端显然尚未(尚未)实现ginput
功能。因此,该问题可以用不同的方式表述:如何在Jupyter上的浏览器外生成绘图?我记得我能做到的只是打字