2015-02-07 18 views
6

मैं IPython नोटबुक इनलाइन में लेखाचित्र तैयार करने के कोशिश कर रहा हूँ के रूप में IPython नोटबुक में प्रदर्शित नहीं करता है, लेकिन .plot() methos सिर्फ वस्तु जानकारी दिखाता है,पांडा साजिश इनलाइन

<matplotlib.axes._subplots.AxesSubplot at 0x10d8740d0> 

लेकिन कोई ग्राफ के रूप में। मैं इसे plt.show() के साथ ग्राफ दिखा सकता हूं, लेकिन मैं इसे इनलाइन करना चाहता हूं। तो मैंने %matplotlib inline और ipython notebook --matplotlib=inline का प्रयास किया, लेकिन यह कोई सहायक नहीं था।

तो मैं %matplotlib inline उपयोग करते हैं, तो .plot() से पता चलता

/Users/<username>/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/IPython/core/formatters.py:239: 
FormatterWarning: Exception in image/png formatter: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) FormatterWarning, 

और ipython notebook --matplotlib=inline का उपयोग कर एक ही पता चलता है।

+0

सोचें कि हमें अधिक जानकारी की आवश्यकता होगी, अपना कोड, आयात और मंच दिखाएं ... – dartdog

+0

'% matplotlib इनलाइन' का उपयोग करते समय वर्णित त्रुटि यूनिकोड और तारों से निपटने वाली समस्या के कारण है। शायद, आपके पास 'लैटिन -1' के साथ एन्कोड किए गए वर्ण हैं और एक रूपांतरण 'डीकोड' का उपयोग करने का प्रयास कर रहा है। हालांकि, 'डीकोड' आपके चरित्र को डिफ़ॉल्ट एन्कोडिंग 'ascii' का उपयोग करके यूनिकोड में परिवर्तित कर रहा है और चूंकि वह वर्ण एसीआईआई में नहीं मिलता है, रूपांतरण विफल हो जाता है। आपको डीकोड ('" \ xe2 "का उपयोग करके अपनी स्ट्रिंग को यूनिकोड में कनवर्ट करने का प्रयास करना चाहिए।डीकोड (एन्कोडिंग = 'लैटिन -1') ') उस डेटा को matplotlib में पास करने से पहले। –

उत्तर

4

बदलें

ipython notebook --matplotlib=inline 

सूचना नहीं = हस्ताक्षर करने के लिए
ipython notebook --matplotlib inline 

3

मैं आपको एक उदाहरण देता होगा ऊपर मेरी टिप्पणी के आधार पर:

import matplotlib.pyplot as plt 

%matplotlib inline 

legend = "\xe2" 

plt.plot(range(5), range(5)) 
plt.legend([legend]) 

जिसमें परिणाम:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) 

जैसा कि मैंने कहा, यह है

आप कुछ इस तरह है क्योंकि matplotlib प्रकार unicode के तारों का उपयोग करना चाहता है। इसलिए, साजिश की प्रक्रिया में, matplotlib decode का उपयोग करके इसे यूनिकोड में परिवर्तित करने के लिए अपनी स्ट्रिंग को डीकोड करने का प्रयास करता है। हालांकि, decode मेंडिफ़ॉल्ट एन्कोडिंग के रूप में है, और चूंकि आपका वर्ण ascii से संबंधित नहीं है, इसलिए एक त्रुटि दिखाई देती है। समाधान उचित एन्कोडिंग के साथ स्ट्रिंग अपने आप को डिकोड करने के लिए है:

import matplotlib.pyplot as plt 

%matplotlib inline 

legend = "\xe2".decode(encoding='latin-1') 

plt.plot(range(5), range(5)) 
plt.legend([legend]) 

enter image description here

वैसे, उपयोग ipython notebook --matplotlib inline के बारे में है, यह माना जाता है बुरा व्यवहार है कि क्योंकि आप छुपा रहे हैं क्या आप में किया था करने के लिए परिणामी नोटबुक प्राप्त करने के लिए आदेश। आपकी नोटबुक में %matplotlib inline शामिल करना बेहतर है।

0

आपकी सभी मददओं के लिए धन्यवाद। मैंने उपर्युक्त सभी की कोशिश की है, लेकिन काम नहीं किया।

यहां मैंने पाया कि fontmanager.py में matplotlib 1.4.x में बग था, this matplotlib के विकास संस्करण के साथ तय किया गया और यह काम करता था।

मुझे खेद है कि मुझे पहले यह नहीं मिला। आप सभी के लिए धन्यवाद।