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

end*_*ith 83 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),例如,当我绘制这个脚本时,它会在交互式窗口中并排绘制子图:

在此输入图像描述

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

微小的内联PNG

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

图形选项

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

如果我关掉这个下拉Qt的,或取消选中"激活的支持",只绘出了第一次要情节,或它的一部分,然后停止:

在此输入图像描述

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

小智 122

将后端更改为自动:

工具>首选项> IPython控制台>图形>图形后端>后端:自动

然后关闭并打开Spyder.

  • 关闭和开放确实是必要的.只是想知道为什么这不是默认值. (24认同)
  • 此外,对于任何仍然没有看到他们的情节的人(就像我没有看到的那样),情节窗口可能会默默地出现在你的控制台窗口(至少它在Windows 10上的Spyder中),所以你可能不得不四处寻找你的窗口. (5认同)
  • 您可以重新启动Spyder而不是重新启动内核(通过单击控制台中的设置轮然后"重新启动内核"或通过键盘快捷键(在Mac Cmd +上). (4认同)
  • 对于那些找不到此问题的人,它位于python>首选项> IPython控制台>图形>图形后端>后端:自动` (2认同)
  • 我必须重新启动才能使它工作. (2认同)

Mik*_*e T 42

您可以通过在Spyder的IPython控制台中键入内置的魔术命令来快速控制这一点,我发现这比从首选项菜单中选择这些命令要快.更改立即生效,无需重新启动Spyder或内核.

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

%matplotlib auto
Run Code Online (Sandbox Code Playgroud)

然后,如果要切换回"内联",请键入:

%matplotlib inline
Run Code Online (Sandbox Code Playgroud)

(注意:这些命令在非IPython控制台中不起作用)

  • 有没有办法使用脚本进行设置?即选择脚本中图形的输出在哪里?谢谢。 (3认同)
  • @Karlo希望传统的"python"解释器出错.此语法仅对ipython或Spyder有效. (2认同)

小智 9

应用后:工具>首选项>图形>后端>自动 只需重新启动内核 在此输入图像描述

你一定会得到互动情节.快乐的编码!


J. *_*rde 5

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

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