如何在Spyder / IPython / matplotlib中再次获得交互式图?

时间:2014-05-10 19:04:19

标签: python matplotlib ipython spyder

我在Windows 7中从Python(x,y)2.7.2.3升级到2.7.6.0(很高兴看到我最终可以输入function_name?并再次查看Object Inspector中的docstring)但现在绘图不像以前那样有效。

以前(Spyder 2.1.9,IPython 0.10.2,matplotlib 1.2.1),例如,当我绘制this script时,它会在交互式窗口中并排绘制子图:

enter image description here

现在(Spyder 2.2.5,IPython 1.2.0,Matplotlib 1.3.1)当我尝试绘制事物时,它将子图作为微小的内联PNG,这是一个change in IPython

tiny inline PNGs

所以我进入选项并发现了这个:

graphics options

这似乎说我可以将旧的交互式图重新打开,并且4个子图并排显示,但是当我切换到“自动”并尝试绘制某些内容时,它什么也没做。根本没有阴谋。

如果我将此下拉列表切换为Qt,或取消选中“激活支持”,则仅绘制第一个子图或部分子图,然后停止:

enter image description here

如何在一个可以与之交互的图中获得4个并排子图的旧行为?

6 个答案:

答案 0 :(得分:111)

将后端更改为自动:

工具>偏好> IPython控制台>图形>图形后端>后端:自动

然后关闭并打开Spyder。

答案 1 :(得分:35)

您可以通过在Spyder的IPython控制台中输入built-in magic commands来快速控制,我发现这比从偏好设置菜单中选择这些更快。更改立即生效,无需重新启动Spyder或内核。

切换到"自动" (即交互式)图,键入:

%matplotlib auto

然后,如果您想切换回"内联",请输入:

%matplotlib inline

(注意:这些命令不适用于非IPython控制台)

答案 2 :(得分:5)

正如评论中所说,问题在于你的脚本。实际上,有两个问题:

  • 有一个matplotlib错误,我猜你在某处传递了一个参数None。也许是由于defaultdict?
  • 您在每个子情节后调用show()。应在脚本结束时调用show()一次。另一种方法是使用交互模式,在matplotlib的文档中查找ion

答案 3 :(得分:5)

应用后:工具>首选项>图形>后端>自动只需重新启动内核 enter image description here

您肯定会获得“互动情节”。 祝您编码愉快!

答案 4 :(得分:2)

这实际上很容易解决,并且不需要任何编码:

1。单击控制台上方的“绘图”选项卡。 2.然后在绘图屏幕的右上角单击选项按钮。 3.最后取消选中“静音在线绘图”按钮

现在重新运行脚本,图形将显示在控制台中。

干杯。

答案 5 :(得分:-2)

对于大多数数学编码,我使用这个网站及其服务,因为他们为每个主题提供示例,他们的支持非常有帮助:
https://labdeck.com/application-examples-screenshots/

如果您希望图形以可变数量变化,那么您要使用的代码是

   import matplotlib.pyplot as plt
   import time
   vec1=[1, 2, 3, 4, 5]
   vec2py=[10, 12, 9, 11, 13]
   plt.show()
   axes = plt.gca()
   axes.set_xlim(0, 6)
   axes.set_ylim(5, 50)
   plt.xlabel('x - axis')
   plt.ylabel('y - axis')
   plt.title('Example 1')
   plt.grid()
   line,= axes.plot(vec1,vec2py,color='red',lw=1)
   for x in range(0,10):
      vec2py = [x + 2 for x in vec2py]
      line.set_ydata(vec2py)
      plt.draw()
      plt.pause(1e-17)
      time.sleep(0.5)
   plt.show()

您必须更改 x 以表示您想要的图形迭代次数以及您希望它运行多长时间,以及 vec2py 行中的 +2 表示您想要更改它的变量数量。当然,代码是一个模板,您可以进行任何美学上的更改。此代码文件位于上面链接中python编程下的显示动态图下。

如果你想显示一个来源的信息的持续依赖,我不知道如何做到这一点,但之前提到的网站确实有一个例子,但它不是在 python 中,而是在一个简化的形式C++。如果你确实想看到它,那么链接是 https://labdeck.com/examples/dsp-ecg-processing/ecg-9-leads-graphs.pdf?01a96f&01a96f 并且它在 ECG 下的 ECG 9 导联图在开头的链接上。 图形可以在文档中显示,也可以独立于文档显示。

PS 这适用于有相同问题但不一定相同场景的人,因为我认为这会帮助更多。