使用Spyder IDE中的Matplotlib绘制内联或单独窗口

时间:2015-03-30 21:05:38

标签: python matplotlib spyder

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

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

谢谢!

4 个答案:

答案 0 :(得分:37)

%matplotlib qt

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

%matplotlib inline

当你想要一个内联图

答案 1 :(得分:19)

转到 工具>>偏好设置>> IPython控制台>>图形>>后端:内联,更改"内联"到"自动",点击"确定"

在控制台重置内核,图表将显示在单独的窗口中

答案 2 :(得分:11)

魔术命令,例如

from IPython import get_ipython

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

在这种情况下,导入后:

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

使用:

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

用于内联绘制以下代码,

> library(lubridate)
> TimeData <- data.frame(Time = c("0M 19S", "1M 24S", "7M 53S", "11M 6S"))
> TimeData$Time <- ms(TimeData$Time)
> subset(TimeData, Time > "5M 00S")
    Time
3 7M 53S
4 11M 6S

用于在外部窗口中绘图。

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

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

答案 3 :(得分:0)

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

在我的脚本中,我现在可以使用 switch_backend 作为 plt.switch_backend('module://ipykernel.pylab.backend_inline')plt.switch_backend('Qt5Agg') 在每个新图之前,使其内联或分离/交互。

(使用 Spyder 4.2.2 测试。)