每次启动IPython笔记本时,我运行的第一个命令是
%matplotlib inline
有没有办法改变我的配置文件,以便当我启动IPython时,它自动处于这种模式?
该设置在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的每个环境都有全局影响。如果你想在一个变化的环境中有一个共同的行为,你也可以认为这是一个优势。
因此,请根据您的需求选择您想要使用的方法
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