2016-03-28 2 views
11

से फ़ाइल चलाने पर Matplotlib प्लॉट नहीं दिखाए जाते हैं जब मैं ipython shell से या ipython नोटबुक से फ़ाइलें चलाता हूं, लेकिन जब मैं बैश टर्मिनल से फ़ाइल चलाता हूं तो वे दिखाई नहीं देते हैं - - बैश टर्मिनल से चलने पर सब कुछ ठीक काम करता है।बैश टर्मिनल

नमूना अजगर स्क्रिप्ट (trial.py):

import matplotlib.pyplot as plt 

print 'please, show my graph' 

plt.plot([1,2,3], [1,2,3]) 

plt.show() 

यह मैं क्या (साजिश दिखाई नहीं देता) मिलता है:

[~/Desktop]$ python trial.py 
please, show my graph 
[~/Desktop]$ 

तो मुझे क्या करना

import matplotlib 
matplotlib.use('TkAgg') 
Pyplot आयात करने से पहले

, फिर जब मैं इसे टर्मिनल से चलाता हूं तो एक विंडो खुलती है और बंद हो जाती है। मेरी फाइल में

import matplotlib.pyplot as plt 
import matplotlib.pylab as plt 
from matplotlib import pyplot as plt 
from matplotlib import pylab as plt 

मैं plt.show है() फ़ंक्शन:

मैं सफलता के बिना मॉड्यूल आयात करने के विभिन्न तरीकों की कोशिश की है।

क्या आप जानते हैं कि मैं इसे कैसे ठीक कर सकता हूं?

संस्करणों और स्थापना के बारे में कुछ जानकारी:

मैं एक मैक OSX 10.11.3 पर।

In [61]: print matplotlib.__file__ 
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.pyc 

In [62]: print matplotlib.__version__ 
1.4.2 

In [64]: print sys.version 
2.7.9 (default, Apr 7 2015, 07:58:25) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] 

In [65]: matplotlib.get_backend() 
Out[65]: u'MacOSX' 
+1

क्या आप एक नमूना पूर्ण स्क्रिप्ट प्रदान कर सकते हैं जो कुछ भी आउटपुट नहीं करेगा? 'आयात matplotlib.pyplot के रूप में सरल के रूप में plt के रूप में; plt.plot ([1,2,3], [1,2,3]); plt.show() '। इसके अलावा, आप किस matplotlib बैकएंड का उपयोग कर रहे हैं? – wflynny

+0

धन्यवाद, @wflynny। matplotlib.get_backend() आउटपुट u'MacOSX '। वह कोड कुछ भी प्रदर्शित नहीं करता है। – drake

+1

प्रदर्शन के बाद कोड को स्पष्ट रूप से अवरुद्ध करने के लिए 'plt.show (block = True)' का प्रयास करें। आपका संपादन यह सुझाव देता है कि विंडो कोड को अवरुद्ध नहीं कर रही है, इसलिए इससे मदद मिल सकती है। अगर यह काम करता है तो मैं अपना जवाब संपादित करूंगा। इसके अलावा, बस पुष्टि करें कि 'plt.show() 'आपके कोड में अंतिम पंक्ति है, है ना? – Munir

उत्तर

23

अपने कोड के matplotlib.pyplot.show() जोड़ने के लिए गैर-सहभागी मोड में भूखंडों दिखाने की जरूरत है। http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.show

संपादित करें पर डॉक्स देखें: अवरुद्ध,

ओपी से अधिक जानकारी के बाद plt.show(block=True) का उपयोग कर स्पष्ट रूप से सक्षम किया जाना था।

+0

धन्यवाद के रूप में डिफ़ॉल्ट रूप से सही कैसे सेट करें। वह मेरे पास है। मैंने कुछ अतिरिक्त जानकारी शामिल करने के लिए अपना प्रश्न संपादित किया है। – drake

+0

यहां एक संबंधित प्रश्न है http://stackoverflow.com/questions/36274351/how-does-one-set-keyword-block-in-plt-show-equal-to-true-by-default। मैं डिफ़ॉल्ट रूप से उस कीवर्ड को सही पर सेट करना चाहता हूं, ताकि मैं "block = True" बताए बिना स्क्रिप्ट चला सकूं। – drake