在 Spyder IDE 中使用 Matplotlib 绘制内联或单独的窗口
Posted
技术标签:
【中文标题】在 Spyder IDE 中使用 Matplotlib 绘制内联或单独的窗口【英文标题】:Plot inline or a separate window using Matplotlib in Spyder IDE 【发布时间】:2015-06-04 01:29:40 【问题描述】:当我使用 Matplotlib 绘制一些图形时,默认的内联绘图通常很好。但是,当我绘制一些 3D 图形时,我希望将它们放在单独的窗口中,以便可以启用旋转等交互。我可以在 Python 代码中配置要内联显示的图形以及要在新窗口中显示的图形吗?
我知道在 Spyder 中,单击工具、首选项、Ipython 控制台、图形并在图形后端下选择“自动”而不是“内联”。但是,这会使所有数字都在新窗口中。当我有很多情节时,它可能会很混乱。所以我只希望那些 3D 绘图在新窗口中,但所有其他 2D 绘图保持内联。有可能吗?
谢谢!
【问题讨论】:
【参考方案1】:类型
%matplotlib qt
当您想要在单独的窗口中显示图表时
%matplotlib inline
当你想要一个内联图时
【讨论】:
是否有一个选项可以在新的打开窗口或控制台中显示绘图,例如在 Rstudio 中的单独窗口中?例如。当绘制 10 个图时,有 10 个打开的窗口而且一直滚动浏览整个控制台是很烦人的。因此,我希望可以将它们寻址到某个窗口,但我不知道如何..? 我应该在 Python Spyder 的哪里输入?【参考方案2】:转到 Tools >> Preferences >> IPython console >> Graphics >> Backend:Inline,将“Inline”改为“Automatic”,点击“OK”
在控制台重置内核,绘图将出现在单独的窗口中
【讨论】:
你知道是否可以在某个 spyderrc 配置文件中设置这个选项吗? 编辑,我找到了:/home/user/.config/spyder-py3/spyder.ini 它应该包含 pylab/backend = 1 我认为【参考方案3】:魔术命令如
%matplotlib qt
在 iPython 控制台和 Notebook 中工作,但不在脚本中工作。
在这种情况下,导入后:
from IPython import get_ipython
使用:
get_ipython().run_line_magic('matplotlib', 'inline')
用于以下代码的内联绘图,以及
get_ipython().run_line_magic('matplotlib', 'qt')
用于在外部窗口中绘图。
编辑:上述解决方案并不总是有效,具体取决于您的操作系统/Spyder 版本 Anaconda issue on GitHub。将图形后端设置为自动(如另一个答案所示:工具>>首选项>> IPython控制台>>图形->自动)为我解决了这个问题。
然后,在重新启动控制台后,可以使用 get_ipython() 命令在内联和外部绘图窗口之间切换,而无需重新启动控制台。
【讨论】:
+1 在 Ubuntu 下并在 firefox 下运行 Jupyter / IPython,最后一行 get_ipython().run_line_magic('matplotlib', 'qt') 是打开带有 matplotlib-plot 的交互式窗口所必需的! 也适用于 vscode python 交互式窗口,其中魔法命令并不总是有效【参考方案4】:我已在 Spyder 首选项中将 IPython 控制台后端设置为 Automatic
。
在我的脚本中,我现在可以使用 switch_backend 作为
plt.switch_backend('module://ipykernel.pylab.backend_inline')
或 plt.switch_backend('Qt5Agg')
在每个新情节之前,使其成为内联或独立/交互式。
(使用 Spyder 4.2.2 测试。)
【讨论】:
【参考方案5】:如果您只想查看 1 或 2 个图表,您也可以尝试在绘图窗口中手动取消停靠它们。所以在右上角的窗口
-
选择“绘图”选项卡
单击带有 3 个水平条的按钮
选择“取消停靠”
它将在新窗口中打开绘图。当您关闭窗口时,它会停靠回来。
【讨论】:
以上是关于在 Spyder IDE 中使用 Matplotlib 绘制内联或单独的窗口的主要内容,如果未能解决你的问题,请参考以下文章
将模块(特别是 pymorph)添加到 Spyder(Python IDE)