如何在Spyder/IPython/matplotlib中重新获取交互式绘图?

114 投票
6 回答
325321 浏览
提问于 2025-04-18 06:08

我把Python(x,y)从2.7.2.3升级到了2.7.6.0,是在Windows 7上进行的(我很高兴看到我终于可以输入function_name?来查看对象检查器中的文档字符串了),但是现在绘图的功能不再像以前那样好用了。

之前(Spyder 2.1.9,IPython 0.10.2,matplotlib 1.2.1),当我运行这个脚本时,它会在一个互动窗口中并排显示子图:

enter image description here

现在(Spyder 2.2.5,IPython 1.2.0,Matplotlib 1.3.1),当我尝试绘图时,它只会把子图显示成很小的内嵌PNG图片,这在IPython中是个变化

tiny inline PNGs

所以我去选项里查看,发现了这个:

graphics options

看起来这个设置可以让我恢复到以前的互动绘图方式,四个子图并排显示,但当我切换到“自动”选项后,尝试绘图时却什么都不显示,根本没有图。

如果我把这个下拉菜单切换到Qt,或者取消勾选“激活支持”,它只会绘制第一个子图,或者只显示一部分,然后就停止了:

enter image description here

我该如何才能恢复到以前那种可以互动的四个并排子图的效果呢?

6 个回答

2

其实这个问题很简单,不需要写代码就能解决:

1. 点击控制台上方的“Plots”标签。

2. 然后在图形界面的右上角点击“选项”按钮。

3. 最后取消勾选“静音内联绘图”这个选项。

现在重新运行你的脚本,你的图表就应该能在控制台里显示出来了。

5

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

  • 有一个matplotlib的错误,我猜是你在某个地方传了一个None的参数。可能是因为使用了defaultdict?
  • 你在每个子图后都调用了show()show()应该在你的脚本最后只调用一次。另一种方法是使用交互模式,可以在matplotlib的文档中查找ion
12

在你选择了:工具 > 首选项 > 图形 > 后端 > 自动之后,只需要重启一下内核 在这里输入图片描述

这样你就能得到互动图表了。

61

你可以通过在Spyder的IPython控制台里输入一些内置的魔法命令,快速控制图形的显示方式。我觉得这样比从偏好设置菜单里选择要快得多。更改后会立即生效,不需要重启Spyder或内核。

如果你想切换到“自动”(也就是交互式)图形显示,可以输入:

%matplotlib auto

如果你想切换回“内联”显示,可以输入:

%matplotlib inline

(注意:这些命令在非IPython控制台中是无效的)

想了解更多背景信息,可以查看这个链接:“%matplotlib inline”的目的

169

把后台设置成自动:

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

然后关闭再打开 Spyder。

撰写回答