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.