Matplotlib'de çizim penceresi yok


92

Matplotlib'i sinaptik paket sistemini kullanarak Ubuntu 9.10'a kurdum. Ancak, aşağıdaki basit örneği denediğimde

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

Arsa penceresi yok. Arsa penceresinin nasıl gösterileceğine dair bir fikriniz var mı?


8
pylab çizimi varsayılan olarak göstermez, çünkü çizim ve sürekli güncelleme pahalı olabilir. Açıkça belirtmen gerekiyor show().
Alok Singhal

1
Bu konuyla ilgili bazı resmi belgeler: matplotlib.org/faq/…
stephenbez

Yanıtlar:


143

Yazabilirsin

import pylab
pylab.show()

veya daha iyisi, kullanın ipython -pylab.


pylab Artık kullanılması tavsiye edilmediğinden çözüm günümüzde olacaktır.

import matplotlib.pyplot as plt

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

plt.show()

38

pylab.show() çalışır ancak engeller (pencereyi kapatmanız gerekir).

Çok daha uygun bir çözüm, pylab.ion()başladığınız zaman (etkileşimli mod açık) yapmaktır: tüm (pilab eşdeğerleri) pyplot.*komutlar , grafiklerini hemen görüntüler. Etkileşimli mod hakkında daha fazla bilgi resmi web sitesinde bulunabilir.

Ayrıca , parçayı atlamanıza izin veren daha uygun olanı ipython -pylab( daha --pylabyeni sürümlerde) ikinci olarak kullanıyorum ( daha yeni IPython sürümlerinde de çalışır).from … import …%pylab


1
ama pylab.show()bir figürü açmak için önce aramanız gerekiyor .
Steve Tjoa

3
@Steve: Benim deneyimime göre, bu büyük ölçüde arka uca bağlı. Normal Python kabuğu ile Mac OS X'te, bunun için show () (veya draw ()) yapmak zorunda değilim: plot () yeni bir pencere açar.
Eric O Lebigot

1
Ah tamam. İyi bir nokta. Yalnızca Linux'ta ipython ile deneyimim var.
Steve Tjoa

draw () benim için çalışmıyor ama pylab.ion () çalışıyor. OSx kullanıyorum
user1506145

En son Matplotlib ile Python kabuğunda da aynı şey var. Cevabımı güncelledim, teşekkürler.
Eric O Lebigot

17

Bunu dene:

import matplotlib
matplotlib.use('TkAgg') 

Pylab'ı içe aktarmadan ÖNCE


11

Aşağıdaki kod parçacığı hem Eclipse hem de Python kabuğunda çalışır:

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()

Diğer birçok yanıtın açıklığa kavuşturduğu gibi, bu şu anda sizin için işe yarayabilir, ancak hepsi matplotlib arka ucunuzun nasıl yapılandırıldığına bağlıdır.
nealmcb

9

Herhangi bir hata ortaya çıktı mı? Bu, arka ucu ayarlamamayla ilgili bir sorun olabilir. Python yorumlayıcısından veya .matplotlib/matplotlibrcana dizininizdeki bir yapılandırma dosyasından ( ) ayarlayabilirsiniz .

Arka ucu kodda ayarlamak için şunları yapabilirsiniz:

import matplotlib
matplotlib.use('Agg')

burada "Agg" arka ucun adıdır. Hangi arka uçların mevcut olduğu, kurulumunuza ve işletim sisteminize bağlıdır.

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

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


1
Tamamen işe yarıyor, teşekkürler. Açık olmak gerekirse, (Eğer bu tabii çalışıyor konw kez) basit şey yapmak da arka uç ayarlamaktır .matplotlib/matplotlibrciçin backend: Agg. Öyleyse useher seferinde açıkça bir tane yapmak zorunda değilsiniz :)
dsummersl

2

Modern IPython, --matplotlibisteğe bağlı bir arka uç parametresiyle " " bağımsız değişkenini kullanır . Varsayılan olarak, Mac ve Windows için genellikle yeterince iyi olan "auto" dur. Ubuntu veya başka bir Linux dağıtımında test etmedim, ancak çalışmasını bekliyorum.

ipython --matplotlib

0

pylab.show()IPython penceresini donduran bir sorunla karşılaşırsanız (bu, Mac OS X'e özgü olabilir; emin değilim), IPython penceresinde cmd-c yapabilir, çizim penceresine geçebilirsiniz ve kırılacaktır.

Görünüşe göre, gelecekteki çağrılar pylab.show()IPython penceresini dondurmayacak, sadece ilk çağrıyı donduracak. Ne yazık ki, matplotlib'i her yeniden yüklediğimde çizim penceresinin / show () ile etkileşimlerin davranışının değiştiğini, bu nedenle bu çözümün her zaman geçerli olmayabileceğini buldum.


0

IPython'u --pylabseçenekle başlatıyorsanız , show()veya draw(). Bunu dene:

ipython  --pylab=inline

0

--pylabartık Jupyter için çalışmıyor , ancak neyse ki, ipython_config.pyhem işlevselliği pylabhem de autoreloadişlevselliği elde etmek için dosyaya bir ince ayar ekleyebiliriz .

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

0

Anaconda ve Spyder kullanıcısıysanız, sizin için en iyi çözüm şudur:

Araçlar -> Tercihler -> Ipython konsolu -> Grafik Bölümü

Ardından, Grafik desteği (Matplotlib) bölümünde:

mevcut iki seçenek seçin

ve Grafik Arka Uçta :

Otomatik'i seçin


-5

Easy_install kullanırken başka bir olasılık, matplotlib'in en son sürümüne ihtiyaç duymanızdır. Deneyin:

import pkg_resources
pkg_resources.require("matplotlib")

matplotlib veya modüllerinden herhangi birini içe aktarmadan önce.


2
Bu sadece matplotlibkurulduğundan emin olur, pencere işlemenin nasıl yapıldığını etkilemez.
tacaswell
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.