IPython नोटबुक में स्वचालित रूप से% matplotlib इनलाइन चलाएं


91

हर बार जब मैं आईपीथॉन नोटबुक लॉन्च करता हूं, तो मेरे द्वारा चलाया जाने वाला पहला कमांड है

%matplotlib inline

क्या मेरी कॉन्फ़िगर फ़ाइल को बदलने का कोई तरीका है ताकि जब मैं IPython लॉन्च करूं तो यह अपने आप इस मोड में हो जाए?


1
क्या 'ipython -pylab' काम करता है?
क्रिस एरिना

यदि ऐसा है, तो आप ipython को उपनाम दे सकते हैं बस बहुत आसानी से।
क्रिस एरिना

5
ipython --matplotlibबेहतर है
tacaswell 21

कृपया बाउंटी को नजरअंदाज करें । चयनित उत्तर 5.5.0 के लिए काम करता है। मैं अनिवार्य 24 घंटे की अवधि के बाद इनाम को बंद कर दूंगा। उसके लिए माफ़ करना!
रिकार्डो क्रूज़

मैं शर्त लगाता हूं कि आपने इस प्रश्न को टाइप करने में अधिक समय बिताया है और समाधान को लागू करने की कोशिश कर रहे हैं, बस इसे अपनी नोटबुक की शुरुआत में चिपकाने से अधिक है: 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"

मैटलोट्लिब बनाम पाइलैब

%pylabइनलाइन प्लॉटिंग प्राप्त करने के उपयोग को हतोत्साहित किया जाता है

यह आपके नाम स्थान में सभी प्रकार के गन का परिचय देता है जिसकी आपको आवश्यकता नहीं है।

%matplotlibदूसरी ओर अपने नाम स्थान को इंजेक्ट किए बिना इनलाइन प्लॉटिंग को सक्षम बनाता है। आपको matplotlib और numpy आयात करने के लिए स्पष्ट कॉल करने की आवश्यकता होगी।

import matplotlib.pyplot as plt
import numpy as np

स्पष्ट रूप से आपके आयात को टाइप करने की छोटी कीमत को इस तथ्य से पूरी तरह से दूर किया जाना चाहिए कि अब आपके पास प्रतिलिपि प्रस्तुत करने योग्य कोड है।


2
धन्यवाद। मैं वास्तव में matplotlib डॉक्स में इस विन्यास विकल्प को देखा था, लेकिन यह निश्चित नहीं था कि क्या यह सिर्फ matplotlib बैकेंड सेट करता है जो एक बार मैन्युअल रूप से कॉल करने पर%matplotlib प्रभावी होगा या क्या यह दोनों डिफ़ॉल्ट बैकएंड सेट करता है और स्वचालित रूप से तुरंत उपयोग के लिए इसे सेट करता है। iPython का वातावरण।
8one6

3
matplotlibबनाम केली केली के संपादन को जोड़ने के लिए pylab, iPython हर बार जब आप प्रोफ़ाइल का उपयोग करके लॉन्च करते हैं, तो मनमाने ढंग से अजगर कोड को स्वचालित रूप से निष्पादित करना बहुत आसान हो जाता है। मेरा मानना है कि यह एक प्रोफाइल है जहाँ आप स्वचालित रूप से आम के आयात की तरह करते हैं करने के लिए काफी आम है import numpy as np; import pandas as pd; import matplotlib.pyplot as plt, आदि एनबी: pylabहै नहीं के रूप में एक ही बात pyplot। यह महसूस करने में मुझे एक महीना लग गया होगा।
8one6

3
इस (साथ ही सिल्लीबियर के जवाब) ने IPython 3 के साथ काम करना बंद कर दिया। github.com/ipython/docker-notebook/pull/7#issuecomment-54729770 "cIPKernel.matplotlib" का उपयोग करने का सुझाव देता है ... जो न तो काम करता है और न ही ।
पिएत्रो बैटिस्टन

3
इस जवाब ने मेरे लिए काम किया। IPython 3 में स्पष्ट रूप से एक नई कॉन्फ़िगरेशन फ़ाइल है, ipython_kernel_config.pyजिसमें यह विकल्प है। ipython profile create testडिफ़ॉल्ट पाने के लिए एक नया प्रोफ़ाइल ( ) बनाएं ।
DGrady

3
लगता है कि इस विकल्प का नाम बदलकरc.InteractiveShellApp.matplotlib = "inline"
tiago

6

मुझे लगता है कि आप जो चाहते हैं वह कमांड लाइन से निम्नलिखित को चलाने के लिए हो सकता है:

ipython notebook --matplotlib=inline

अगर आपको इसे हर बार cmd लाइन पर टाइप करना पसंद नहीं है, तो आप इसे अपने लिए करने के लिए एक उपनाम बना सकते हैं।


1
कृपया अपनी पोस्ट को --matplotlib inline--पायलैब के सामान में बदल दें और हटा दें। एक ipython devel की यह पोस्ट क्यों देखें: carreau.github.io/posts/10-No-PyLab-Thanks.ipynb.html
Jakob

1
एक नोट के बारे में matplotlib=inline: यह आपके द्वारा लॉन्च किए गए प्रत्येक कर्नेल को धीमा कर देगा, भले ही आप matplotlib का उपयोग करना चाहते हों।
काइल केली

7
यह अब काम नहीं करता है (कम से कम IPython 4 के रूप में)। कमांड लाइन विकल्प --matplotlibया --pylabअनदेखा किया जाता है।
तियागो

1
जुपिटर कमांड-लाइन मदद के लिए मदद का कहना है कि ये विकल्प अक्षम हैं और इसका उपयोग करना चाहिए %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)

और पिछले संस्करणों में यह एक चेतावनी है। लेकिन यह एक बड़ा मुद्दा नहीं है क्योंकि जुपिटर की अवधारणाओं का उपयोग करता है 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बैकएंड में परिवर्तन करें जो आप उपयोग कर रहे हैं (मैं उपयोग करता हूं 'qt4') और फ़ाइल को सहेजता हूं । IPython को पुनरारंभ करें, और matplotlib और pylab को लोड किया जाना चाहिए - आप dir()वैश्विक नेमस्पेस में कौन से मॉड्यूल हैं यह सत्यापित करने के लिए कमांड का उपयोग कर सकते हैं ।


3

में (वर्तमान) IPython 3.2.0 (पायथन 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')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.