IPython Notebook에서 자동으로 % matplotlib 인라인 실행


91

IPython Notebook을 시작할 때마다 실행하는 첫 번째 명령은

%matplotlib inline

IPython을 시작할 때 자동으로이 모드가되도록 구성 파일을 변경하는 방법이 있습니까?


1
'ipython -pylab'이 작동합니까?
Chris Arena

그렇다면 ipython의 별칭을 사용하여 쉽게 할 수 있습니다.
Chris Arena

5
ipython --matplotlib더 낫다
tacaswell 2014-01-17

현상금을 무시하십시오 . 선택한 답변은 5.5.0에서 작동합니다. 의무적 인 24 시간이 지나면 현상금을 마감하겠습니다. 미안합니다!
Ricardo Cruz

D : 나는 당신이이 질문을 입력하고 간단하게 노트북의 태초에 붙여보다 솔루션을 구현하기 위해 노력하고 더 많은 시간을 보냈다 내기
지능형 인프라를

답변:


82

구성 방법

IPython에는 구성을위한 프로필이 있습니다 ~/.ipython/profile_*. 기본 프로필은라고 profile_default합니다. 이 폴더에는 두 가지 기본 구성 파일이 있습니다.

  • 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
matplotlibvs pylab에 관한 @Kyle Kelley의 편집에 추가하기 위해 iPython 은 프로파일을 사용하여 시작할 때마다 임의의 파이썬 코드를 자동으로 실행하는 것을 매우 쉽게 만듭니다. 나는 당신이 자동으로 일반적인 수입이 좋아 할 프로필이 꽤 일반적인 생각 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

3
이 옵션으로 이름이 변경되었습니다 보인다c.InteractiveShellApp.matplotlib = "inline"
티아구

6

원하는 것은 명령 줄에서 다음을 실행하는 것입니다.

ipython notebook --matplotlib=inline

매번 cmd 줄에 입력하는 것을 좋아하지 않는다면 별칭을 만들어 자동으로 수행 할 수 있습니다.


1
게시물을 --matplotlib inline--pylab 항목으로 변경 하고 제거하십시오. ipython 개발자
Jakob

1
한 가지 참고 사항 matplotlib=inline: matplotlib 사용 여부에 관계없이 실행하는 모든 커널의 속도가 느려집니다.
Kyle Kelley 2014 년

7
이것은 더 이상 작동하지 않습니다 (적어도 IPython 4부터). 명령 줄 옵션 --matplotlib또는 --pylab무시됩니다.
tiago

1
Jupyter 명령 줄 도움말에 대한 도움말에는 이러한 옵션이 비활성화되어 있으므로 %pylab또는 %matplotlib대신 사용해야 합니다.
카스

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'

그러나이 접근 방식의 단점은 이것이 파이썬을 사용하는 모든 환경에 글로벌 영향을 미친다는 것입니다. 한 번의 변경으로 환경 전반에서 공통된 동작을 유지하려는 경우에도 이점으로 간주 할 수 있습니다.

따라서 요구 사항에 따라 사용할 접근 방식을 선택하십시오.


3

ipython_config.py파일에서 다음 행을 검색 하십시오.

# c.InteractiveShellApp.matplotlib = None

# c.InteractiveShellApp.pylab = None

주석을 제거하십시오. 그런 다음 None사용중인 백엔드 (I use '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.