IPython Dizüstü Bilgisayarda otomatik olarak% matplotlib satır içi çalıştır


92

IPython Notebook'u her başlattığımda çalıştırdığım ilk komut

%matplotlib inline

IPython'u başlattığımda otomatik olarak bu modda olacak şekilde yapılandırma dosyamı değiştirmenin bir yolu var mı?


1
'İpython -pylab' çalışıyor mu?
Chris Arena

Öyleyse, bunu oldukça kolay bir şekilde yapmak için ipython takma adını kullanabilirsiniz.
Chris Arena

5
ipython --matplotlibdaha iyi
tacaswell

Lütfen ödülü dikkate almayın . Seçilen cevap 5.5.0 için çalışıyor. 24 saatlik zorunlu süreden sonra ödülü kapatacağım. Bunun için üzgünüm!
Ricardo Cruz

Bahse girerim bu soruyu yazmak ve çözümü uygulamaya çalışmak için not defterinizin başlangıcına yapıştırmaktan daha fazla zaman harcamışsınızdır: D
Intelligent-Infrastructure

Yanıtlar:


83

Yapılandırma yolu

IPython, adresinde bulunan konfigürasyon profillerine sahiptir ~/.ipython/profile_*. Varsayılan profil denir profile_default. Bu klasörde iki ana yapılandırma dosyası vardır:

  • ipython_config.py
  • ipython_kernel_config.py

Matplotlib için satır içi seçeneğini şuraya ekleyin ipython_kernel_config.py:

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

matplotlib ve pylab

Kullanımı %pylabsatır içi komplo olup gitmek cesaretini .

Ad alanınıza ihtiyacınız olmayan her tür gunku getirir.

%matplotlibdiğer yandan ad alanınızı enjekte etmeden satır içi çizimi etkinleştirir. Matplotlib ve numpy içe aktarmak için açık çağrılar yapmanız gerekecek.

import matplotlib.pyplot as plt
import numpy as np

İçe aktarımlarınızı açıkça yazmanın küçük bedeli, artık yeniden üretilebilir koda sahip olduğunuz gerçeğiyle tamamen aşılmalıdır.


2
Teşekkürler. Aslında bu yapılandırma seçeneğini matplotlib belgelerinde görmüştüm, ancak manuel olarak%matplotlib arandıktan sonra etkili olacak matplotlib arka ucunu ayarlayıp ayarlamadığından veya hem varsayılan arka ucu ayarlayıp hem de otomatik olarak hemen kullanım için ayarlayıp ayarlamadığından emin değildim . iPython ortamı.
8one6

3
@Kyle Kelley'in matplotlibvs ile ilgili düzenlemesine eklemek için, iPython pylab, Profiller'i her başlattığınızda rastgele python kodunu otomatik olarak çalıştırmayı çok kolaylaştırır. İnanıyorum ki import numpy as np; import pandas as pd; import matplotlib.pyplot as plt, vb. Gibi ortak ithalatları otomatik olarak yaptığınız bir profile sahip olmanın oldukça yaygın olduğuna inanıyorum . Not: pylabile aynı şey değildirpyplot . Bunu anlamam bir ayımı almış olmalı.
8one6

3
Bu (ve SillyBear'ın cevabının yanı sıra) IPython 3 ile çalışmayı durdurdu. Github.com/ipython/docker-notebook/pull/7#issuecomment-54729770 , "c.IPKernel.matplotlib" kullanılmasını öneriyor ... ki bu da işe yaramıyor .
Pietro Battiston

3
Bu cevap benim için çalıştı. IPython 3'te görünüşe göre ipython_kernel_config.pybu seçeneği içeren yeni bir yapılandırma dosyası var . ipython profile create testVarsayılan almak için yeni bir profil ( ) oluşturun.
DGrady

3
Bu seçeneğin adıc.InteractiveShellApp.matplotlib = "inline"
tiago

6

Sanırım istediğin şey, komut satırından aşağıdakileri çalıştırmak olabilir:

ipython notebook --matplotlib=inline

Her seferinde cmd satırına yazmayı sevmiyorsanız, sizin için yapmak için bir takma ad oluşturabilirsiniz.


1
Lütfen yayınınızı --matplotlib inline--pylab olarak değiştirin ve kaldırın. Bir ipython geliştiricisinin neden bu gönderisine bakın: carreau.github.io/posts/10-No-PyLab-Thanks.ipynb.html
Jakob

1
Bir not matplotlib=inline: Matplotlib'i kullanmak isteyip istemediğinize bakılmaksızın, başlattığınız her çekirdeği yavaşlatacaktır.
Kyle Kelley

7
Bu artık çalışmıyor (en azından IPython 4 itibariyle). Komut satırı seçenekleri --matplotlibveya --pylabyok sayılır.
tiago

1
Jupyter komut satırı yardımı yardımı, bu seçeneklerin devre dışı bırakıldığını ve bunun yerine %pylabveya %matplotlibkullanılması gerektiğini söylüyor .
Cas

4

Ayar, Jupyter 5.Xaşağıdaki kod eklenerek ve üzerinde devre dışı bırakıldı

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)

Ve önceki sürümlerde büyük ölçüde bir uyarı oldu. Ancak bu büyük bir sorun değil çünkü Jupyter, kavramlarını kullanıyor kernelsve aşağıdaki komutu çalıştırarak projeniz için çekirdeği bulabilirsiniz.

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

Bu bana çekirdek klasörünün yolunu veriyor. Şimdi /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3/kernel.jsondosyayı açarsam, aşağıdaki gibi bir şey görüyorum

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

Böylece, çekirdeği başlatmak için hangi komutun çalıştırıldığını görebilirsiniz. Yani aşağıdaki komutu çalıştırırsanız

$ 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`

Şimdi kernel.jsondosyamızı şu şekilde güncellersek

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

Ve çalıştırırsam jupyter notebookgrafikler otomatik olarakinline

Otomatik Satır İçi

Aşağıdaki yolda bir dosya oluşturduğunuzda, aşağıdaki yaklaşımın hala çalıştığını unutmayın.

~ / .ipython / profile_default / ipython_kernel_config.py

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

Ancak bu yaklaşımın dezavantajı, bunun python kullanan her ortam üzerinde küresel bir etki olmasıdır. Tek bir değişiklikle ortamlar arasında ortak bir davranışa sahip olmak istiyorsanız, bunu bir avantaj olarak da düşünebilirsiniz.

Bu nedenle, ihtiyacınıza göre hangi yaklaşımı kullanmak istediğinizi seçin


3

Senin içinde ipython_config.pydosyaya, aşağıdaki satırları aramak

# c.InteractiveShellApp.matplotlib = None

ve

# c.InteractiveShellApp.pylab = None

ve yorum yapmayın. Ardından, Nonekullandığınız arka uca geçin (kullanıyorum 'qt4') ve dosyayı kaydedin. IPython'u yeniden başlatın ve matplotlib ve pylab yüklenmelidir - dir()hangi modüllerin genel ad alanında olduğunu doğrulamak için komutu kullanabilirsiniz .


3

(Şu anki) IPython 3.2.0'da (Python 2 veya 3)

.İpython gizli klasöründeki yapılandırma dosyasını açın

~/.ipython/profile_default/ipython_kernel_config.py

aşağıdaki satırı ekleyin

c.IPKernelApp.matplotlib = 'inline'

hemen sonra ekle

c = get_config()

2

@Kyle Kelley ve @DGrady'ye ek olarak, burada bulabileceğiniz giriş

$HOME/.ipython/profile_default/ipython_kernel_config.py (veya hangi profili oluşturduysanız)

Değişiklik

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

-e

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

Bu daha sonra hem ipython qtconsole hem de notebook oturumlarında çalışacaktır.


2

İçeren herhangi bir .pydosya oluşturun~/.ipython/profile_default/startup/

get_ipython().magic('matplotlib inline')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.