Matplotlib में कोई प्लॉट विंडो नहीं


90

मैं सिर्फ synaptic पैकेज सिस्टम का उपयोग करके Ubuntu 9.10 में matplotlib स्थापित किया है। हालांकि, जब मैं निम्नलिखित सरल उदाहरण की कोशिश करता हूं

>>> from pylab import plot;
>>> plot([1,2,3],[1,2,3])
[<matplotlib.lines.Line2D object at 0x9aa78ec>]

मुझे कोई प्लॉट विंडो नहीं मिलती। भूखंड खिड़की दिखाने के लिए कैसे पर कोई विचार?


8
पाइलैब डिफ़ॉल्ट रूप से प्लॉट नहीं दिखाती है, क्योंकि ड्राइंग और निरंतर अपडेट महंगा हो सकता है। आपको एक स्पष्ट करने की आवश्यकता है show()
आलोक सिंघल

1
इस मुद्दे पर कुछ आधिकारिक दस्तावेज: matplotlib.org/faq/…
stephenbez

जवाबों:



38

pylab.show() काम करता है लेकिन ब्लॉक (आपको विंडो बंद करने की आवश्यकता है)।

pylab.ion()जब आप शुरू करते हैं तो एक और अधिक सुविधाजनक समाधान (इंटरैक्टिव मोड पर) करना है: सभी (पाइलैब समकक्ष) pyplot.*कमांड अपने प्लॉट को तुरंत प्रदर्शित करते हैं। इंटरैक्टिव मोड पर अधिक जानकारी आधिकारिक वेब साइट पर पाई जा सकती है।

मैं और भी अधिक सुविधाजनक ipython -pylab( --pylabनए संस्करणों में) का उपयोग करके दूसरा स्थान प्राप्त करता हूं , जो आपको from … import …भाग को छोड़ देता है ( %pylabकार्य करता है, नए आईपीथॉन संस्करणों में भी)।


1
लेकिन आपको pylab.show()एक आंकड़ा खोलने के लिए पहले कॉल करने की आवश्यकता है ।
स्टीव तोजा

3
@ संदर्भ: मेरा अनुभव है कि यह दृढ़ता से बैकएंड पर निर्भर करता है। नियमित पायथन शेल के साथ मैक ओएस एक्स पर, मुझे उस मामले के लिए शो () या (या ड्रा) नहीं करना पड़ता है: प्लॉट () एक नई विंडो खोलता है।
एरिक ओ लेबिगोट

1
आह ठीक है। अच्छी बात। मेरे पास केवल लिनक्स में आईपाइथन के साथ अनुभव है।
स्टीव टोज़ा

ड्रा () मेरे लिए काम नहीं करता है, लेकिन pylab.ion () काम करता है। मैं
user1506145

नवीनतम मैथ्लोटलिब के साथ पायथन शेल में यहां एक ही बात। मैंने अपना जवाब अपडेट किया, धन्यवाद।
एरिक ओ लेबिगॉट


11

नीचे दिया गया कोड स्निपेट ग्रहण और पायथन शेल दोनों पर काम करता है:

import numpy as np
import matplotlib.pyplot as plt

# Come up with x and y
x = np.arange(0, 5, 0.1)
y = np.sin(x)

# Just print x and y for fun
print x
print y

# Plot the x and y and you are supposed to see a sine curve
plt.plot(x, y)

# Without the line below, the figure won't show
plt.show()

जैसा कि कई अन्य उत्तर स्पष्ट करते हैं, यह इस समय आपके लिए काम कर सकता है, लेकिन यह सब इस बात पर निर्भर करता है कि आपका मैटलपोटलिब बैकेंड कैसे कॉन्फ़िगर किया गया है।
nealmcb

9

किसी भी त्रुटि दिखा? यह बैकएंड सेट नहीं करने का मुद्दा हो सकता है। आप इसे पायथन इंटरप्रेटर से या किसी कॉन्फिग फ़ाइल से सेट कर सकते हैं (.matplotlib/matplotlibrc घर की निर्देशिका में ) ।

कोड में बैकएंड सेट करने के लिए आप कर सकते हैं

import matplotlib
matplotlib.use('Agg')

जहाँ 'एग' बैकएंड का नाम है। कौन से बैकएंड मौजूद हैं यह आपके इंस्टॉलेशन और OS पर निर्भर करता है।

http://matplotlib.sourceforge.net/faq/installing_faq.html#backends

http://matplotlib.org/users/customizing.html


1
पूरी तरह से काम करता है, धन्यवाद। स्पष्ट होने के लिए, सबसे आसान काम जो करना है (एक बार जब आप इस पर काम कर रहे हैं) तो अपने बैकएंड को इसमें सेट .matplotlib/matplotlibrcकरना है backend: Agg। फिर आपको useहर बार स्पष्ट रूप से एक नहीं करना है :)
dsummersl

2

आधुनिक IPython --matplotlibवैकल्पिक बैकएंड पैरामीटर के साथ " " तर्क का उपयोग करता है । यह "ऑटो" के लिए डिफॉल्ट करता है, जो आमतौर पर मैक और विंडोज पर काफी अच्छा होता है। मैंने इसे उबंटू या किसी अन्य लिनक्स वितरण पर परीक्षण नहीं किया है, लेकिन मुझे उम्मीद है कि यह काम करेगा।

ipython --matplotlib

0

यदि आप ऐसी समस्या का सामना करते हैं जिसमें pylab.show()IPython विंडो को फ्रीज करता है (यह Mac OS X विशिष्ट हो सकता है; निश्चित नहीं), तो आप IPython विंडो में cmd-c कर सकते हैं, प्लॉट विंडो पर स्विच कर सकते हैं, और यह टूट जाएगा।

जाहिरा तौर पर, भविष्य की कॉल pylab.show()केवल पहली कॉल के लिए, IPython विंडो को फ्रीज नहीं करेगी। दुर्भाग्य से, मैंने पाया है कि हर बार जब मैं matplotlib को पुनर्स्थापित करता हूं तो शो () शो के साथ प्लॉट विंडो / इंटरैक्शन का व्यवहार बदल जाता है, इसलिए यह समाधान हमेशा पकड़ में नहीं आ सकता है।


0

यदि आप --pylabविकल्प के साथ IPython शुरू कर रहे हैं , तो आपको कॉल show()या करने की आवश्यकता नहीं होनी चाहिए draw()। इसे इस्तेमाल करे:

ipython  --pylab=inline

0

--pylabअब जुपिटर के लिए काम नहीं करता है , लेकिन सौभाग्य से हम ipython_config.pyफाइल में एक ट्विन जोड़ सकते हैं ताकि दोनों के pylabसाथ-साथ autoreloadफंक्शंस भी मिल सकें ।

c.InteractiveShellApp.extensions = ['autoreload', 'pylab']
c.InteractiveShellApp.exec_lines = ['%autoreload 2', '%pylab']

0

यदि आप एनाकोंडा और स्पाइडर के उपयोगकर्ता हैं तो आपके लिए सबसे अच्छा समाधान यह है:

उपकरण -> वरीयताएँ -> Ipython कंसोल -> ग्राफिक अनुभाग

फिर ग्राफिक्स के समर्थन में (Matplotlib) अनुभाग:

दो उपलब्ध विकल्पों का चयन करें

और ग्राफिक्स बैकएंड में :

स्वचालित का चयन करें


-5

Easy_install का उपयोग करते समय एक और संभावना यह है कि आपको matplotlib के सबसे हाल के संस्करण की आवश्यकता है। प्रयत्न:

import pkg_resources
pkg_resources.require("matplotlib")

इससे पहले कि आप matplotlib या इसके किसी भी मॉड्यूल को आयात करें।


2
यह सिर्फ यह सुनिश्चित करता है कि matplotlibस्थापित किया गया है, यह प्रभावित नहीं करता है कि विंडो हैंडलिंग कैसे की जाती है।
ताकसवेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.