Spyder / IPython / matplotlib'de tekrar etkileşimli grafikleri nasıl edinebilirim?


94

Windows 7'de Python (x, y) 2.7.2.3'ten 2.7.6.0'a yükselttim (ve nihayet function_name?Object Inspector'da docstring'i tekrar yazıp görebildiğime ve görebileceğime sevindim ) ancak şimdi çizim çalışmıyor alışığım.

Daha önce (Spyder 2.1.9, IPython 0.10.2, matplotlib 1.2.1), bu komut dosyasını çizdiğimde, örneğin, alt grafikleri etkileşimli bir pencerede yan yana çiziyordu:

görüntü açıklamasını buraya girin

Şimdi (Spyder 2.2.5, IPython 1.2.0, Matplotlib 1.3.1) bir şeyleri çizmeye çalıştığımda, alt grafikleri küçük satır içi PNG'ler olarak yapıyor, bu IPython'da bir değişikliktir :

küçük satır içi PNG'ler

Bu yüzden seçeneklere girdim ve şunu buldum:

grafik seçenekleri

Bu, eski etkileşimli grafikleri yan yana görüntülenen 4 alt grafikle geri alabileceğimi söylüyor, ancak "Otomatik" e geçip bir şeyi çizmeye çalıştığımda hiçbir şey yapmıyor. Hiç komplo yok.

Bu açılır listeyi Qt olarak değiştirirsem veya "Desteği etkinleştir" seçeneğinin işaretini kaldırırsam, yalnızca ilk alt planı veya bir kısmını çizer ve ardından durur:

görüntü açıklamasını buraya girin

Etkileşim kurabileceğim tek bir şekilde 4 yan yana alt grafiğin eski davranışını nasıl elde ederim?


Bunun pythonxy'ye bir hata raporu olarak gitmesi gerektiğini düşünüyorum. Benim saf tahminim, pyplot'u orada her şeyi planlamak ve onun için kıçtan ısırılmak için kullanıyor olmalarıdır (bu yanlış görünüyor, çünkü kendi qt widget'ları var).
tacaswell

1
@tcaswell "Onlar" kimdir ve pyplot yerine ne kullanırlar?
endolith

1
Bu sorunu pythonxy dışında yeniden üretebilir misiniz (sadece düz ipython + qtconsole kullanarak)? Burada neyin yanlış gittiğini anlamak için yeterli bilgi yok.
tacaswell

1
Spyder'da bir hata olduğunu tahmin ediyorum (Spyder IDE'dir, pythonxy dağıtımdır).
Thomas K

1
@tcaswell: Aha. Görünüşe göre betiğim daha sonra IPython konsolu dışında bir yere gönderilen matplotlib hataları üretiyor. Bunun yerine Qt konsolunu kullanırsam görünürler ve şimdi aradığıma göre, Spyder'ın normal Konsol sekmesinde görünürler. Daha basit bir betik yaparsam, ister durum makinesi ister nesne yönelimli olsun, çalışır. Yeni satır içi grafikler nedeniyle bazı IPython ayarlarını değiştirmem gerektiğini varsaydım.
endolith

Yanıtlar:


137

Arka ucu otomatik olarak değiştirin:

Araçlar> tercihler> IPython konsolu> Grafikler> Grafik arka ucu> Arka uç: Otomatik

Ardından Spyder'ı kapatın ve açın.


27
Kapatma ve açma gerçekten de gereklidir. Bunun neden varsayılan değer olmadığını merak ediyorum.
Mathias711

5
Ayrıca, arsalarını hala görmeyen herhangi biri için (benim olmadığım gibi), arsa penceresi konsol pencerenizde sessizce görünebilir (en azından Windows 10'da Spyder'da görünür), bu nedenle pencereniz için avlanmak zorunda kalabilirsiniz.
Joshua Glazer

3
Bunu bulmakta python > preferences > IPython console > Graphics > Graphics backend > Backend: Automatic
zorlananlar

6
Spyder'ı yeniden başlatmak yerine, çekirdeği yeniden başlatabilirsiniz (konsoldaki ayarlar tekerleğine tıklayıp ardından "Çekirdeği yeniden başlat" veya bir klavye kısayolu (Mac Cmd + üzerinde)
Michael

Neden olduğuna dair hiçbir fikrim yok, ancak Otomatik'e geçmek, Spyder'ı yeniden başlatmak ve ardından Satır İçi'ne geri dönmek, bir döngüde bir giriş komutu verdiğimde satır içi çizimlerin görüntülenmeye başlamasına neden oldu. Bu çok yardımcı!
Josiah Yoder

51

Bunu, Spyder'ın IPython konsolunda yerleşik sihirli komutları yazarak hızlı bir şekilde kontrol edebilirsiniz , bunları tercihler menüsünden seçmekten daha hızlı buluyorum. Spyder'ı veya çekirdeği yeniden başlatmaya gerek kalmadan değişiklikler anında yürürlüğe girer.

"Otomatik" (yani etkileşimli) grafiklere geçmek için şunu yazın:

%matplotlib auto

sonra tekrar "satır içi" moduna geçmek isterseniz şunu yazın:

%matplotlib inline

(Not: bu komutlar IPython olmayan konsollarda çalışmaz)

Bu konuyla ilgili daha fazla arka plana bakın: "% matplotlib inline" in amacı


Python 3.6'da şunu elde ederimmatplotlib inline File "<stdin>", line 1 %matplotlib inline ^ SyntaxError: invalid syntax
Karlo

2
@Karlo bu hatanın geleneksel bir "python" yorumlayıcısından bekleniyor. Bu sözdizimi yalnızca ipython veya Spyder ile geçerlidir.
Mike T

Tamam, Spyder'da ama Python konsolunda kullanıyordum. Aslında, IPython konsolunda çalışır.
Karlo

3
Komut dosyası kullanarak ayarlamanın bir yolu var mı? Yani grafiğin çıktısının bir komut dosyası içinde nerede olduğunu seçmek? Teşekkür ederim.
Royi

1
Bu, normal bir IPython penceresinde yapmanın yolu olsa da Spyder'da çalışmıyor gibi görünüyor. Menü tercihlerini kullanmak benim için çalıştı; bunun neden olmadığından emin değilim.
Turtles Are Cute

9

Uyguladıktan sonra: Araçlar> tercihler> Grafikler> Arka uç> Otomatik Sadece çekirdeği yeniden başlatın görüntü açıklamasını buraya girin

Ve kesinlikle İnteraktif Arsa alacaksınız. Mutlu Kodlama!


5

Yorumlarda da belirtildiği gibi, sorun senaryonuzda yatıyor. Aslında 2 sorun var:

  • Bir matplotlib hatası var, sanırım bir argüman geçiriyorsunuz None yerde . Belki varsayılan dikteden dolayı?
  • Sen buna show()her subplot sonra. show()senaryonuzun sonunda bir kez çağrılmalıdır. Alternatif, etkileşimli modu kullanmak, ionmatplotlib'in belgelerine bakmaktır .

2

Bunu düzeltmek aslında oldukça kolaydır ve herhangi bir kodlama gerektirmez:

1. Konsolun üzerindeki Plots sekmesine tıklayın. 2. Ardından grafikler ekranının sağ üst köşesindeki seçenekler düğmesine tıklayın. 3. Son olarak "Satır içi çizimi kapat" düğmesinin işaretini kaldırın

Şimdi komut dosyanızı yeniden çalıştırın ve grafikleriniz konsolda görünmelidir.

Şerefe.

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.