2016-03-28 12 views
11

'dan dosya çalışırken gösterilmiyor Normalde ipython kabuğundan veya bir ipython defterinden dosya çalıştırdığımda araziler gösterilir, ancak dosyaları bir bash terminalinden çalıştırdığımda görünmezler - - bash terminalinden çalıştırıldığında her şey iyi çalışıyor.Matplotlib grafikleri, bash terminali

Numune python komut dosyası (trial.py):

import matplotlib.pyplot as plt 

print 'please, show my graph' 

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

plt.show() 

Bu benim (arsa görünmüyor) elde ediyoruz: ben yaparsanız

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

import matplotlib 
matplotlib.use('TkAgg') 
Pyplot'u almadan önce

, sonra terminalden çalıştırdığımda bir pencere açılır ve kapanır.

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

ben plt.show var() işlevini Dosyamda:

başarı olmadan modülleri ithal farklı yolları denedim.

Nasıl düzeltebileceğimi biliyor musunuz?

sürümleri ve kurulum hakkında bazı bilgiler: Bir mac OSX 10.11.3 üzerinde

ben değilim.

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

Hiçbir şey çıkmayacak örnek bir komut dosyası verebilir misiniz? Plt olarak import matplotlib.pyplot gibi basit bile olsa; pltplot ([1,2,3], [1,2,3]); plt.show() '. Ayrıca, hangi matplotlib arka ucunu kullanıyorsunuz? – wflynny

+0

Teşekkürler, @wflynny. matplotlib.get_backend() u'MacOSX 'çıktıları. Bu kod hiç bir şey göstermiyor. – drake

+1

Sadece görüntüden sonra kodu açıkça engellemek için plt.show (blok = True) işlevini deneyin. Düzenlemeniz, pencerenin kodu engellemediğini öneriyor gibi görünüyor, dolayısıyla bu yardımcı olabilir. Çalışırsa cevabımı düzenlerim. Ayrıca, sadece onaylamak için 'plt.show()' kodunuzdaki son satırdır, değil mi? – Munir

cevap

23

Sen etkileşimli olmayan modda araziler göstermek için kodunuzda matplotlib.pyplot.show() eklemeniz gerekir. http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.show

DÜZENLEME at docs bakınız:

OP'sinden ileri bilgi sonra plt.show(block=True) kullanılarak açıkça yetkilendirilmiş olmalıdır engelleme.

+0

Teşekkür olarak nasıl ayarlayacağınızı soracağım. Bende var. Sorumu bazı ek bilgileri içerecek şekilde düzenledim. – drake

+0

İşte bir soru http://stackoverflow.com/questions/36274351/how-does-one-set-keyword-block-in-plt-show-equal-to-true-by-default. Bu anahtar kelimeyi varsayılan olarak True olarak ayarlamak istiyorum, böylece komut dosyalarını "block = True" belirtmeden çalıştırabilirim. – drake