IPython नोटबुक matplotlib प्लॉट इनलाइन कैसे बनाएं


829

मैं Python 2.7.2 और IPython 1.1.0 के साथ MacOS X पर IPython नोटबुक का उपयोग करने का प्रयास कर रहा हूं।

मुझे इनलाइन दिखाने के लिए matplotlib ग्राफिक्स नहीं मिल सकता है।

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

मैंने भी कोशिश की है %pylab inlineऔर ipython कमांड लाइन तर्क हैं --pylab=inlineलेकिन इससे कोई फर्क नहीं पड़ता।

x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('A simple chirp')
plt.show()

इनलाइन ग्राफिक्स के बजाय, मुझे यह मिलता है:

<matplotlib.figure.Figure at 0x110b9c450>

और matplotlib.get_backend()दिखाता है कि मेरे पास 'module://IPython.kernel.zmq.pylab.backend_inline'बैकएंड है।


आपके कोड स्निपेट का उत्पादन नहीं होना चाहिए <matplotlib.figure.Figure at 0x110b9c450>लेकिन <matplotlib.text.Text at 0x94f9320>(क्योंकि आपकी अंतिम पंक्ति एक शीर्षक प्रिंट कर रही है)। वैसे भी, आपका कोड (% matplotlib इनलाइन और plt.show () के साथ) विंडोज़ पर अपेक्षित के रूप में काम करता है
joaquin

उन सुझावों के लिए धन्यवाद, लेकिन वे मेरे लिए काम नहीं करते हैं। मैं अभी भी बिना इनलाइन ग्राफिक्स के साथ उपरोक्त आउटपुट प्राप्त करता हूं। क्या आपके पास कोई समस्या निवारण सलाह है?
इयान फिस्के

कोई सुराग नहीं। एक ही अजगर, एक ही अजगर (और एक ही बैकएंड) लेकिन खिड़कियों पर, और यह काम करता है .... मुझे लगता है कि साजिश आपके लिए काम कर रही है जब इनलाइन नहीं, सही?
शोकाकुल

2
इसके बिना %matplotlib inline, कर्नेल स्थायी रूप से व्यस्त रहता है और मुझे कोई आउटपुट नहीं मिलता है। इसे मारना होगा। यह MacOSXबैकएंड का उपयोग करने की कोशिश कर रहा है, लेकिन मुझे लगता है कि इसे किसी कारण से खोला नहीं जा सकता है। जब ipython नोटबुक का उपयोग नहीं कर रहे हैं, तो matplotlib के लिए MacOSX बैकेंड ठीक काम करता है।
इयान फिस्के

1
मेरे पास एक समान लक्षण था लेकिन यह पता चला कि मैंने OSX 10.8 पर कैनोपी का 32 बिट संस्करण स्थापित किया था। 64 बिट संस्करण के साथ इसे पुनर्स्थापित करना इसे तय किया।
विक्की टी

जवाबों:


1128

मैंने %matplotlib inlineनोटबुक के पहले सेल में इस्तेमाल किया और यह काम करता है। मुझे लगता है कि आपको प्रयास करना चाहिए:

%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

आप हमेशा अपने सभी IPython कर्नेल को इनलाइन मोड में डिफ़ॉल्ट रूप से अपनी कॉन्फिग फाइलों में निम्नलिखित विन्यास विकल्प सेट करके शुरू कर सकते हैं:

c.IPKernelApp.matplotlib=<CaselessStrEnum>
  Default: None
  Choices: ['auto', 'gtk', 'gtk3', 'inline', 'nbagg', 'notebook', 'osx', 'qt', 'qt4', 'qt5', 'tk', 'wx']
  Configure matplotlib for interactive use with the default matplotlib backend.

7
मैं इसे सही उत्तर के रूप में चिह्नित करूंगा। वैकल्पिक --pylab inlineकाम करता है, लेकिन आपको निम्नलिखित चेतावनी के साथ बधाई देता है: सभी गुठली को पाइलैब मोड में शुरू करने की अनुशंसा नहीं की जाती है, और भविष्य के रिलीज में अक्षम हो जाएगा। इसके बजाय matplotlib को सक्षम करने के लिए कृपया% matplotlib जादू का उपयोग करें। पाइलैब का अर्थ है कई आयात, जिनसे भ्रामक दुष्प्रभाव हो सकते हैं और आपकी नोटबुक की प्रजनन क्षमता को नुकसान पहुंचा सकते हैं।
एमपावलोव

1
@ eNord9 @mightwolf: मैं iPython (और मैटलैब के बजाय पायथन प्रोग्रामिंग) का उपयोग करना सीख रहा हूं; क्या import matplotlib' do versus matplotlib [नाम] के रूप में आयात करता है ? सरल टिप्पणी के लिए क्षमा करें
TSGM

1
@ eNord9 @mightwolf: और यह भी कि यह 'matplotlib आयात mpl' से तुलना कैसे करता है।
टीएसजीएम

2
@TSGM आपके प्रश्न के लिए मैंने जो सबसे अच्छी व्याख्या की है वह है: effbot.org/zone/import-confusion.htm
mpavlov

धन्यवाद @ eNord9 मैंने अभी हाल ही में अपडेट और सभी के साथ आपकी आज्ञाओं का परीक्षण किया है। अब पायथन 2.7.9 और आईपीथॉन 3.1.0 पर सब कुछ ठीक है।
इयान फिसके ने

214

यदि आपका matplotlib संस्करण 1.4 से ऊपर है, तो इसका उपयोग करना भी संभव है

IPython 3.x और ऊपर

%matplotlib notebook

import matplotlib.pyplot as plt

पुराने संस्करण

%matplotlib nbagg

import matplotlib.pyplot as plt

दोनों nbagg backend को सक्रिय करेंगे , जो अन्तरक्रियाशीलता को सक्षम बनाता है।

उदाहरण nbagg बैकएंड के साथ प्लॉट


यह साथ काम करने के लिए प्रतीत नहीं होता है %config InlineBackend.figure_format='retina'। किसी भी विचार कैसे इंटरैक्टिव रेटिना आंकड़े प्राप्त करने के लिए?
ओरोम

हम्म ... मैं वास्तव में रेटिना के आंकड़ों के साथ बहुत अधिक विशेषज्ञता नहीं है। केवल एक चीज जिस पर मैंने ठोकर खाई, वह थी इस कड़ी , लेकिन इसे पदावनत किया जा सकता है। यदि अधिक लोग उसी के बारे में सोच रहे हैं, तो मैं आपके एसओ प्रश्न को यहां लिंक करता हूं , और वहां के उत्तरों के साथ आपको शुभकामनाएं देता हूं। बेस्ट
लोरिटेन

31
यह उत्तर रेखांकित है। %matplotlib notebookसे बेहतर दृश्य प्रदान करता है %matplotlib inline
हियु

9
%matplotlib notebookज्यूप्टर नोटबुक 4.1.1 / ubuntu 16.04 / chrome पर काम करने (किसी तरह का कुछ दिखाना, फिर खाली होना) का उपयोग नहीं करता है, %matplotlib inlineचित्र दिखाता है, लेकिन वे मार्कडाउन पाठ के बाद आते हैं, न कि "इनलाइन"।
माइकल

6
यदि आपने %matplotlib inlineपहले प्रयास किया और फिर स्विच किया %matplotlib notebook, तो आपको खाली परिणाम मिल सकता है। कर्नेल को पुनरारंभ करें और फिर से चलाएँ।
Czechnology

90

Ctrl + Enter

%matplotlib inline

मैजिक लाइन: डी

देखें: matplotlib साथ साजिश


1
@BradleyKreider अभी तक नहीं मरा। वैकल्पिक रूप से, आप ipython repo को github पर देख सकते हैं, 'उदाहरण' फ़ोल्डर में जा सकते हैं, 'Plotting with Matplotlib' नोटबुक पा सकते हैं।
कोडफ़ार्म

24

%pylab inlineमैजिक कमांड का उपयोग करें ।


14
अब नहीं: "ipython Notebook --pylab इनलाइन [E 15: 01: 18.182 NotebookApp] कमांड लाइन पर --pylab को निर्दिष्ट करने के लिए समर्थन हटा दिया गया है। [E 15: 01: 18.182 NotebookApp] कृपया %pylab inlineया %matplotlib inlineनोटबुक में ही। "
डेव एक्स

14

Jupyter (IPython 3) में डिफ़ॉल्ट रूप से matplotlib इनलाइन बनाने के लिए:

  1. फ़ाइल संपादित करें ~/.ipython/profile_default/ipython_config.py

  2. लाइन जोड़ें c.InteractiveShellApp.matplotlib = 'inline'

कृपया ध्यान दें कि इस पंक्ति को जोड़ने से ipython_notebook_config.pyकाम नहीं होगा। अन्यथा यह ज्यूपिटर और आईपीथॉन 3.1.0 के साथ अच्छी तरह से काम करता है


10

मुझे फोबार्बेक्यू के साथ सहमत होना होगा (मेरे पास पर्याप्त आरईएस नहीं है जो केवल उनकी पोस्ट के तहत एक टिप्पणी डालने में सक्षम हो सकता है):

अब यह अनुशंसा की जाती है कि अजगर नोटबुक को तर्क नहीं देना शुरू किया जाए --pylab, और फर्नांडो पेरेज़ (ipythonnb के निर्माता) के %matplotlib inlineअनुसार प्रारंभिक नोटबुक कमांड होना चाहिए।

यहां देखें: http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%203%20-%20Plotte%20with%20Matplotlib.ipynb



5

मैं एनाकोंडा स्थापित किया था, लेकिन matplotlib साजिश नहीं है

जब मैंने ऐसा किया तो यह साजिश रचने लगता है

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

2

आप इस समस्या को एक सिंटैक्स गलती से अनुकरण कर सकते हैं, हालांकि, %matplotlib inlineसमस्या को हल नहीं करेगा।

प्लॉट बनाने के सही तरीके का पहला उदाहरण। सब कुछ आयात और जादू के साथ अपेक्षित रूप से काम करता है जो eNord9 आपूर्ति करता है।

df_randNumbers1 = pd.DataFrame(np.random.randint(0,100,size=(100, 6)), columns=list('ABCDEF'))

df_randNumbers1.ix[:,["A","B"]].plot.kde()

हालाँकि, ()प्लॉट प्रकार के अंत को छोड़ने से आपको कुछ अस्पष्ट गैर-त्रुटि प्राप्त होती है।

विशिष्ट कोड:

df_randNumbers1.ix[:,["A","B"]].plot.kde

उदाहरण त्रुटि:

<bound method FramePlotMethods.kde of <pandas.tools.plotting.FramePlotMethods object at 0x000001DDAF029588>>

इस एक पंक्ति संदेश के अलावा, आपके द्वारा सिंटैक्स त्रुटि करने के बारे में सोचने के लिए कोई स्टैक ट्रेस या अन्य स्पष्ट कारण नहीं है। साजिश नहीं छपती।


बिना - यह एक सिंटैक्स त्रुटि नहीं है ()करने के लिए आह्वान kde , IPython आप कह रहा है क्या kde है , जिसका नाम है एक बाध्य विधि। तो वास्तव में iPython के दृष्टिकोण से, यह "त्रुटि" बिल्कुल नहीं है, इसलिए स्टैक ट्रेस नहीं है।
काइल स्ट्रैंड

1
@KyleStrand धन्यवाद। मेरे पोस्ट को फिर से पढ़ने के बाद मुझे जो कहना चाहिए था, वह है: "मुझे लगा कि मुझे %matplotlib inlineकमांड का उपयोग करके इनलाइन दिखाने के लिए मेरे प्लॉट नहीं मिलने की समस्या थी । वास्तव में मैं प्लॉट टाइप के अंत में सिर्फ () डालना भूल गया। बाकी सब विफल हो जाता है, एक गलती के लिए अपने कोष्ठकों को देखें। "
ब्लेक एम

1

मुझे एक ही समस्या थी जब मैं जुपिटर में अलग-अलग सेल में प्लॉटिंग कमांड चला रहा था:

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         <Figure size 432x288 with 0 Axes>                      #this might be the problem
In [4]:  ax = fig.add_subplot(1, 1, 1)
In [5]:  ax.scatter(x, y)
Out[5]:  <matplotlib.collections.PathCollection at 0x12341234>  # CAN'T SEE ANY PLOT :(
In [6]:  plt.show()                                             # STILL CAN'T SEE IT :(

प्लॉटिंग कमांड्स को एक ही सेल में मर्ज करके समस्या का हल किया गया:

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         ax = fig.add_subplot(1, 1, 1)
         ax.scatter(x, y)
Out[3]:  <matplotlib.collections.PathCollection at 0x12341234>
         # AND HERE APPEARS THE PLOT AS DESIRED :)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.