IPython Notebookでインラインで%matplotlibを自動的に実行する


91

IPython Notebookを起動するたびに、最初に実行するコマンドは

%matplotlib inline

IPythonを起動すると自動的にこのモードになるように、構成ファイルを変更する方法はありますか?


1
「ipython -pylab」は機能しますか?
クリスアリーナ

もしそうなら、あなたはそれをかなり簡単に行うためにipythonをエイリアスすることができます。
クリスアリーナ

5
ipython --matplotlibより良い
tacaswell 2014年

賞金は無視してください。選択した回答は5.5.0で機能します。必須の24時間後に賞金を閉じます。申し訳ありません!
Ricardo Cruz、

この質問を入力してソリューションを実装するために多くの時間を費やして、ノートブックの最初に単に貼り付けるよりも多くの時間を費やしたと思います:D
Intelligent-Infrastructure

回答:


82

設定方法

IPythonには、構成用のプロファイルがあります~/.ipython/profile_*。デフォルトのプロファイルはと呼ばれprofile_defaultます。このフォルダー内には、2つの主要な構成ファイルがあります。

  • ipython_config.py
  • ipython_kernel_config.py

matplotlibのインラインオプションを追加しますipython_kernel_config.py

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

matplotlibとpylab

%pylabインラインプロットを取得するためのの使用はお勧めしません

それはあなたが必要としないあらゆる種類の気まぐれをあなたの名前空間に導入します。

%matplotlib一方、名前空間を挿入せずにインラインプロットを有効にします。matplotlibとnumpyをインポートするには、明示的な呼び出しを行う必要があります。

import matplotlib.pyplot as plt
import numpy as np

インポートを明示的に入力するというわずかなコストは、コードを再現できるようになったという事実によって完全に克服されます。


2
ありがとう。私は実際にこの構成オプションをmatplotlibのドキュメントで見ましたが、手動で呼び出したときに%matplotlib有効になるmatplotlibバックエンドを設定するだけなのか、デフォルトのバックエンドを設定し、すぐに使用できるように自動的に設定するのかはわかりませんでしたiPython環境。
8one6 2014年

3
@Kyle Kelleyのmatplotlibvs に関する編集に追加するにはpylab、iPythonを使用すると、プロフィールを使用して起動するたびに、任意のPythonコードを自動的に簡単に実行できます。のような一般的なインポートを自動的に行うプロファイルを作成することは非常に一般的だと思いますimport numpy as np; import pandas as pd; import matplotlib.pyplot as plt。NB:はと同じでpylabはありませんpyplot。それを理解するのに一ヶ月かかったに違いない。
8one6 2014年

3
これ(およびSillyBearの回答)はIPython 3での動作を停止しました。github.com/ipython/docker-notebook/pull/7#issuecomment-54729770は "c.IPKernel.matplotlib"の使用を提案しています...どちらも機能しません。
Pietro Battiston 2015年

3
この答えは私にとってうまくいきました。IPython 3にはipython_kernel_config.py、明らかにこのオプションを含む新しい構成ファイルがあります。ipython profile create testデフォルトを取得するには、新しいプロファイル()を作成します。
DGrady 2015年

3
このオプションの名前はc.InteractiveShellApp.matplotlib = "inline"
tiagoに

6

コマンドラインから次のコマンドを実行するとよいでしょう。

ipython notebook --matplotlib=inline

毎回cmd行に入力したくない場合は、エイリアスを作成してそれを行うことができます。


1
投稿を--matplotlib inline--pylabのものに変更して削除してください。ipython devel whyのこの投稿を参照してください:carreau.github.io/posts/10-No-PyLab-Thanks.ipynb.html
Jakob

1
1つの注意事項matplotlib=inline:matplotlibを使用するかどうかに関係なく、起動するすべてのカーネルの速度が低下します。
カイルケリー2014年

7
これは機能しなくなりました(少なくともIPython 4以降)。コマンドラインオプション--matplotlibまたは--pylabは無視されます。
tiago

1
Jupyterコマンドラインヘルプのヘルプでは、これらのオプションは無効になっているため、%pylabまたはを使用する必要があり%matplotlibます。
Cas

4

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 notebook、グラフを実行すると、自動的にinline

自動インライン

以下のアプローチも引き続き機能することに注意してください。ここでは、パスの下にファイルを作成します

〜/ .ipython / profile_default / ipython_kernel_config.py

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

しかし、このアプローチの欠点は、これがpythonを使用するすべての環境に対するグローバルな影響であることです。単一の変更で環境全体に共通の動作を持たせたい場合にも、それを利点と見なすことができます。

要件に基づいて、使用するアプローチを選択してください


3

あなたにはipython_config.py、ファイル、次の行を検索

# c.InteractiveShellApp.matplotlib = None

そして

# c.InteractiveShellApp.pylab = None

それらのコメントを外します。次に、None使用しているバックエンドに変更し(私はを使用'qt4')、ファイルを保存します。IPythonを再起動すると、matplotlibとpylabが読み込まれdir()ます。このコマンドを使用して、グローバルネームスペースにあるモジュールを確認できます。


3

(現在の)IPython 3.2.0(Python 2または3)

隠しフォルダー.ipython内の構成ファイルを開きます

~/.ipython/profile_default/ipython_kernel_config.py

次の行を追加します

c.IPKernelApp.matplotlib = 'inline'

直後に追加

c = get_config()

2

@Kyle Kelleyと@DGradyに加えて、ここにあるエントリは

$HOME/.ipython/profile_default/ipython_kernel_config.py (または作成したプロファイル)

変化する

# Configure matplotlib for interactive use with the default matplotlib backend.
# c.IPKernelApp.matplotlib = none

# Configure matplotlib for interactive use with the default matplotlib backend.
c.IPKernelApp.matplotlib = 'inline'

これは、ipython qtconsoleセッションとノートブックセッションの両方で機能します。


2

含む.pyファイルを作成する~/.ipython/profile_default/startup/

get_ipython().magic('matplotlib inline')
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.