当前位置: 首页 > 知识库问答 >
问题:

在IPython笔记本中自动运行%matplotlib内联

古刚洁
2023-03-14

每次启动IPython笔记本时,我运行的第一个命令是

%matplotlib inline

有没有办法改变我的配置文件,以便当我启动IPython时,它自动处于这种模式?

共有3个答案

范高刚
2023-03-14

该设置在Jupyter 5中被禁用。X和更高通过添加下面的代码

pylab = Unicode('disabled', config=True,
    help=_("""
    DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.
    """)
)

@observe('pylab')
def _update_pylab(self, change):
    """when --pylab is specified, display a warning and exit"""
    if change['new'] != 'warn':
        backend = ' %s' % change['new']
    else:
        backend = ''
    self.log.error(_("Support for specifying --pylab on the command line has been removed."))
    self.log.error(
        _("Please use `%pylab{0}` or `%matplotlib{0}` in the notebook itself.").format(backend)
    )
    self.exit(1)

在以前的版本中,这主要是一个警告。但是这不是一个大问题,因为Jupyter使用了kernels的概念,你可以通过运行下面的命令来找到你的项目的内核

$ jupyter kernelspec list
Available kernels:
  python3    /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3

这为我提供了内核文件夹的路径。现在,如果我打开/Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin//share/jupyter/kernels/python3/kernel.json文件,我会看到如下内容

{
 "argv": [
  "python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}",
 ],
 "display_name": "Python 3",
 "language": "python"
}

因此,您可以看到执行什么命令来启动内核。所以如果你运行下面的命令

$ python -m ipykernel_launcher --help
IPython: an enhanced interactive Python shell.

Subcommands
-----------

Subcommands are launched as `ipython-kernel cmd [args]`. For information on
using subcommand 'cmd', do: `ipython-kernel cmd -h`.

install
    Install the IPython kernel

Options
-------

Arguments that take values are actually convenience aliases to full
Configurables, whose aliases are listed on the help line. For more information
on full configurables, see '--help-all'.

....
--pylab=<CaselessStrEnum> (InteractiveShellApp.pylab)
    Default: None
    Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
    Pre-load matplotlib and numpy for interactive use, selecting a particular
    matplotlib backend and loop integration.
--matplotlib=<CaselessStrEnum> (InteractiveShellApp.matplotlib)
    Default: None
    Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
    Configure matplotlib for interactive use with the default matplotlib
    backend.
...    
To see all available configurables, use `--help-all`

现在,如果我们将kernel.json文件更新为

{
 "argv": [
  "python",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}",
  "--pylab",
  "inline"
 ],
 "display_name": "Python 3",
 "language": "python"
}

如果我运行jupyter笔记本,图形会自动内联

请注意,下面的方法仍然有效,您可以在下面的路径上创建一个文件

~/.ipython/profile\u default/ipython\u kernel\u config.py

c = get_config()
c.IPKernelApp.matplotlib = 'inline'

但这种方法的缺点是,这对使用python的每个环境都有全局影响。如果你想在一个变化的环境中有一个共同的行为,你也可以认为这是一个优势。

因此,请根据您的需求选择您想要使用的方法

程亦
2023-03-14

我认为您可能希望从命令行运行以下命令:

ipython notebook --matplotlib=inline

如果您不喜欢每次都在cmd行中键入它,那么您可以创建一个别名来执行此操作。

卢聪
2023-03-14

IPython具有用于配置的配置文件,位于~/.IPython/profile.*。默认配置文件称为profile\u default。此文件夹中有两个主要配置文件:

  • ipython\u config.py

matplotlib的内联选项添加到ipython_kernel_config.py

c = get_config()
# ... Any other configurables you want to set
c.InteractiveShellApp.matplotlib = "inline"

不鼓励使用%pylab来获取内联绘图。

它将各种粘稠引入你的命名空间,而你只是不需要。

另一方面,%matplotlib在不注入命名空间的情况下启用内联打印。您需要执行显式调用才能导入matplotlib和numpy。

import matplotlib.pyplot as plt
import numpy as np

显式输入导入的代价很小,但您现在有了可复制的代码,这一事实应该可以完全克服。

 类似资料:
  • 问题内容: 每次启动IPython Notebook时,我运行的第一个命令是 有什么方法可以更改我的配置文件,以便在启动IPython时自动处于此模式? 问题答案: IPython的配置文件位于。默认配置文件称为。在此文件夹中,有两个主要配置文件: 将matplotlib的内联选项添加到: matplotlib与pylab 不鼓励使用inline进行绘图。 它将各种不需要的杂项引入您的名称空间。

  • 我正在看一个ipython笔记本教程,上面说在一个单元中运行这个。导入numpy作为np导入数学导入matplotlib.pyplot作为plt 我应该得到一个实际的图表。我明白了 我该怎么做呢?

  • 问题内容: 我希望按钮和其他交互式matplotlib对象从内部显示 我的ipython笔记本!截图 以下是我所做的: 1已安装http://datasciencetoolbox.org,这是一个安装了ipython和matplotlib版本1.3.1的流浪者盒子。 2我需要将matplotlib升级到最新版本,因为它具有执行内联交互绘图的功能。Matplotlib 1.4.1的新增功能! 问题答

  • 问题内容: 在IPython / Jupyter Notebook中运行的大多数语言内核的错误报告都指出发生错误的行;但是(至少默认情况下)在笔记本电脑中未显示行号。 是否可以将行号添加到IPython / Jupyter Notebook? 问题答案: -在CodeMirror区域中切换行号。有关其他键盘快捷键,请参见快速帮助。 详细信息- (或)将您带入命令模式,然后按键应切换当前单元格行号的

  • 问题内容: 我正在使用内联模式下的IPython Notebook和plot命令绘制一个NumPy值数组。 结果输出为: 然后,我的图显示在这些输出线的下方。 有没有办法只显示图并从输出中隐藏? 问题答案: 您可以使用分号结束行。这样可以在生成图时抑制不必要的输出: 通常,使用分号可以阻止IPython从代码块的该行打印任何输出值。例如,执行包含代码的单元将不会输出。 另一种方法是将变量绑定到图:

  • 在ipython笔记本中使用matplotlib内联后端时,默认行为是使用bbox_inches='tight'通过savefig()在内部生成嵌入的png图像。这消除了轴周围的空白,在大多数情况下非常有用。 但是,有时可能需要(暂时)禁用此功能,例如,当他想要手动保持两个图形垂直对齐时(假设我们不想在此处使用子图): 那么如何禁用这种行为呢?谢谢~ 为了使这里涉及的问题更加明确(多亏了Anzel