在 SpyderIDE 中使用 Matplotlib 内联绘制或单独绘制窗口

当我使用 Matplotlib 绘制一些图形时,它通常适用于默认的内联绘制。但是,当我绘制一些3D 图形时,我希望将它们放在一个单独的窗口中,这样就可以启用像旋转这样的交互。我可以在 Python 代码中配置哪个图形内联显示,哪个图形在新窗口中显示吗?

我知道,在 Spyder 中,单击工具,首选项,Ipython 控制台,图形和下图形后端选择“自动”而不是“内联”。然而,这使得所有的数字在新的窗口。当我有很多情节的时候会很混乱。所以我希望只有这些3D 情节在新的窗口,但所有其他2D 情节保持内联。有可能吗?

谢谢!

237940 次浏览

类型

%matplotlib qt

当你想在一个单独的窗口和图形

%matplotlib inline

当你想要一个内联的情节

像这样的魔法命令

%matplotlib qt

可以在 iPython 控制台和 Notebook 中工作,但不能在脚本中工作。

在这种情况下,进口之后:

from IPython import get_ipython

用途:

get_ipython().run_line_magic('matplotlib', 'inline')

用于以下代码的内联绘图,以及

get_ipython().run_line_magic('matplotlib', 'qt')

用于在外部窗口中绘图。

编辑: 上面的解决方案并不总是有效,这取决于你的 OS/Spyder 版本 Anaconda 问题在 GitHub 上。将图形后端设置为自动(如另一个答案所示: Tools > > Preferences > > IPython 游戏控制台 > > Graphics —— > auto)为我解决了这个问题。

然后,在控制台重新启动后,可以使用 get _ ipython ()命令在内联和外部绘图窗口之间切换,而无需重新启动控制台。

去吧 工具 > > 首选项 > > IPython 控制台 > > 图形 > > 后端: 内联,将“内联”更改为“自动”,单击“确定”

在控制台上重置内核,绘图将出现在一个单独的窗口中

我已经在 Spyder 首选项中将 IPython 控制台后端设置为 Automatic

在我的脚本中,我现在可以使用 Switch _ backend 开关后端作为 plt.switch_backend('module://ipykernel.pylab.backend_inline')plt.switch_backend('Qt5Agg') 在每块新地之前,使其成为内联的或独立的/交互的。

(使用 Spyder4.2.2进行测试)

如果您只想查看1或2个图表,也可以尝试在绘图窗口中手动取消停靠。所以在右上角的窗口

  1. 选择“ plot”选项卡
  2. 点击带有3个水平条的按钮
  3. 选择“取消停靠”

它会在一个新窗口中打开地块,当你关闭窗口时,它会停靠回来。

enter image description here