在 Spyder IDE 中使用 Matplotlib 绘制内联图或单独的 window

Plot inline or a separate window using Matplotlib in Spyder IDE

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

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

谢谢!

类型

%matplotlib qt

当您需要单独的 window 和

图表时
%matplotlib inline

当你想要内联图时

魔法命令如

%matplotlib qt  

在 iPython 控制台和笔记本中工作,但不能在脚本中工作。

在这种情况下,导入后:

from IPython import get_ipython

使用:

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

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

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

用于在外部绘图 window。

编辑:上述解决方案并不总是有效,具体取决于您的 OS/Spyder 版本 Anaconda issue on GitHub。将图形后端设置为自动(如另一个答案所示:工具 >> 首选项 >> IPython 控制台 >> 图形 --> 自动)为我解决了这个问题。

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

前往 工具 >> 首选项 >> IPython 控制台 >> 图形 >> Backend:Inline,将 "Inline" 更改为 "Automatic",单击 "OK"

在控制台重置内核,剧情会单独出现window

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

在我的脚本中,我现在可以将 switch_backend 用作 plt.switch_backend('module://ipykernel.pylab.backend_inline') or plt.switch_backend('Qt5Agg') before each new plot, to make it either inline or separate/interactive.

(使用 Spyder 4.2.2 测试。)

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

  1. select 'plots' 选项卡
  2. 单击带有 3 个水平条的按钮
  3. select 'undock'

它将在新的 window 中打开剧情。当您关闭 window 时,它会停靠回来。