IPython dizüstü bilgisayar matplotlib çizimini yerinde yapma


831

Python 2.7.2 ve IPython 1.1.0 ile MacOS X üzerinde IPython dizüstü bilgisayar kullanmaya çalışıyorum.

Matplotlib grafiklerini satır içinde gösteremiyorum.

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

Ben de denedim %pylab inlineve ipython komut satırı argümanları --pylab=inlineama bu hiçbir fark yaratmaz .

x = np.linspace(0, 3*np.pi, 500)
plt.plot(x, np.sin(x**2))
plt.title('A simple chirp')
plt.show()

Satır içi grafikler yerine şunu alıyorum:

<matplotlib.figure.Figure at 0x110b9c450>

Ve arka uca matplotlib.get_backend()sahip olduğumu gösterir 'module://IPython.kernel.zmq.pylab.backend_inline'.


Kod snippet'inizin üretmek olmamalıdır <matplotlib.figure.Figure at 0x110b9c450>ama <matplotlib.text.Text at 0x94f9320>(son satırı bir başlık baskı nedeniyle). Her neyse, kodunuz (% matplotlib inline ve plt.show () ile) pencerelerde beklendiği gibi çalışır
joaquin

Bu öneriler için teşekkürler, ama benim için çalışmıyorlar. Yukarıdaki çıktıyı hala satır içi grafik olmadan alıyorum. Sorun giderme tavsiyeleriniz var mı?
Ian Fiske

İpucu yok. Aynı python, aynı ipython (ve aynı arka uç) ama pencerelerde ve çalışıyor .... Sanırım arsa inline olmadığında sizin için çalışıyor, değil mi?
joaquin

2
olmadan, %matplotlib inlineçekirdek sürekli meşgul kalır ve ben hiçbir çıktı almak. Öldürülmek zorunda. Bu MacOSXarka ucu kullanmaya çalışıyor ama sanırım nedense açılamıyor. İpython dizüstü bilgisayar kullanılmadığında, matplotlib için MacOSX arka ucu gayet iyi çalışıyor.
Ian Fiske

1
Özdeş bir semptomum vardı, ancak OSX 10.8'e Canopy'nin 32 bit sürümünü yüklediğim ortaya çıktı. 64 bit sürümüyle yeniden yükleme sorunu çözdü.
Vicky T

Yanıtlar:


1130

%matplotlib inlineDizüstü bilgisayarın ilk hücresinde kullandım ve çalışıyor. Bence denemelisin:

%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

Ayrıca yapılandırma dosyalarınızda aşağıdaki yapılandırma seçeneklerini ayarlayarak varsayılan olarak tüm IPython çekirdeklerinizi varsayılan olarak satır içi modda başlatabilirsiniz:

c.IPKernelApp.matplotlib=<CaselessStrEnum>
  Default: None
  Choices: ['auto', 'gtk', 'gtk3', 'inline', 'nbagg', 'notebook', 'osx', 'qt', 'qt4', 'qt5', 'tk', 'wx']
  Configure matplotlib for interactive use with the default matplotlib backend.

7
Bunu doğru cevap olarak işaretlerdim. Alternatif --pylab inlineçalışır, ancak aşağıdaki uyarıyla sizi karşılar
mpavlov

1
@ eNord9 @mightwolf: iPython (ve Matlab yerine Python programlama) kullanmayı öğreniyorum; import matplotlib' do versus matplotlib'i [name] 'olarak ne içeri aktarır? Basit yorum için affet
TSGM

1
@ eNord9 @mightwolf: ve bu da `` matplotlib import mpl'den '' nasıl karşılaştırılır.
TSGM

2
@TSGM Sorunuz için gördüğüm en iyi açıklama: effbot.org/zone/import-confusion.htm
mpavlov

Teşekkürler @ eNord9. Komutlarınızı, güncellemeler ve her şey bir süredir test ettiğimden beri test ettim. Şimdi Python 2.7.9 ve IPython 3.1.0'da her şey iyi çalışıyor.
Ian Fiske

216

Matplotlib sürümünüz 1.4'ün üzerindeyse,

IPython 3.x ve üstü

%matplotlib notebook

import matplotlib.pyplot as plt

eski versiyonlar

%matplotlib nbagg

import matplotlib.pyplot as plt

Her ikisi de nbagg arka ucunu etkinleştirecek etkileşimi sağlayan .

Nbagg arka ucuyla örnek çizim


Bu işe yaramıyor gibi görünüyor %config InlineBackend.figure_format='retina'. Etkileşimli Retina figürleri nasıl edinilir?
orome

Hmm ... Retina figürleriyle ilgili çok fazla uzmanlığım yok. Tökezlediğim tek şey bu bağlantıydı , ama itiraz edilebilir. Daha fazla kişi aynı şeyi merak ediyorsa, SO sorunuzu buraya bağlarım ve oradaki cevaplarda iyi şanslar dilerim. En iyi
Løiten

31
Bu cevabın önemsiz olduğu anlaşılıyor. %matplotlib notebookdaha iyi görselleştirme sağlar %matplotlib inline.
Hieu

9
%matplotlib notebookjupyter notebook 4.1.1 / ubuntu 16.04 / chrome üzerinde kullanmak çalışmıyor (bir şeyleri gösterir, sonra boş gösterir), %matplotlib inlinegörüntüleri gösterir, ancak tam anlamıyla "satır içi" değil, işaretleme metninden sonra gelirler.
michael

6
%matplotlib inlineÖnce denedikten sonra %matplotlib notebookgeçerseniz boş sonuç alabilirsiniz. Çekirdeği yeniden başlatın ve tekrar çalıştırın.
Çek teknolojisi

91

Ctrl + Enter

%matplotlib inline

Sihirli Çizgi: D

Bakınız: Matplotlib ile çizim .


1
@BradleyKreider Henüz ölmedi. Alternatif olarak, github'daki ipython repo'yu ziyaret edebilir, 'example' klasörüne gidebilir, 'Matplotlib ile çizim' not defterini bulabilirsiniz.
CodeFarmer

24

%pylab inlineSihirli komutu kullanın .


14
Artık: "ipython notebook --pylab satır içi [E 15: 01: 18.182 NotebookApp] Komut satırında --pylab belirtme desteği kaldırıldı. [E 15: 01: 18.182 NotebookApp] Lütfen %pylab inlineveya %matplotlib inlinedizüstü bilgisayarın kendisinde kullanın. "
Dave X

14

Jupyter'de (IPython 3) matplotlib'i satır içi yapmak için:

  1. Dosya düzenle ~/.ipython/profile_default/ipython_config.py

  2. Satır ekle c.InteractiveShellApp.matplotlib = 'inline'

Bu satırı eklemenin ipython_notebook_config.pyişe yaramayacağını lütfen unutmayın . Aksi takdirde Jupyter ve IPython 3.1.0 ile iyi çalışır




5

Anaconda yüklemesini yaptım ama matplotlib çizmiyor

Bunu yaptığımda çizmeye başlar

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline  

2

Bu sorunu bir sözdizimi hatasıyla simüle edebilirsiniz, ancak %matplotlib inlinesorunu çözmez.

İlk olarak bir komplo oluşturmanın doğru yoluna bir örnek. ENord9'un sağladığı ithalat ve sihirle her şey beklendiği gibi çalışıyor .

df_randNumbers1 = pd.DataFrame(np.random.randint(0,100,size=(100, 6)), columns=list('ABCDEF'))

df_randNumbers1.ix[:,["A","B"]].plot.kde()

Ancak, ()çizim türünün sonunu kapalı bırakarak biraz belirsiz bir hata alırsınız.

Hatalı kod:

df_randNumbers1.ix[:,["A","B"]].plot.kde

Örnek hata:

<bound method FramePlotMethods.kde of <pandas.tools.plotting.FramePlotMethods object at 0x000001DDAF029588>>

Bu tek satırlık mesaj dışında, bir sözdizimi hatası yaptığınızı düşünmek için yığın izlemesi veya açık bir neden yoktur. Çizim yazdırılmıyor.


Olmadan - Bu bir yazım hatasıdır değildir ()etmek çağırmak kde ne ipython anlatıyor kde olduğunu , yani bir sınır metodu. Aslında iPython'un bakış açısından, bu bir "hata" değildir, bu yüzden neden yığın izlemesi yoktur.
Kyle Strand

1
@KyleStrand Teşekkürler. Yazımı yeniden okuduktan sonra söylemem gereken şey şu: “Komutlarımı %matplotlib inlinekomutla satır içinde göstermeme sorunum olduğunu düşündüm . Gerçekten sadece arsa türünün sonuna () koymayı unuttum. her şey başarısız olursa, bir hata için parantezinize bakın. "
Blake M

1

Jupyter ayrı hücrelerde çizim komutlarını çalıştırırken aynı sorunu vardı:

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         <Figure size 432x288 with 0 Axes>                      #this might be the problem
In [4]:  ax = fig.add_subplot(1, 1, 1)
In [5]:  ax.scatter(x, y)
Out[5]:  <matplotlib.collections.PathCollection at 0x12341234>  # CAN'T SEE ANY PLOT :(
In [6]:  plt.show()                                             # STILL CAN'T SEE IT :(

Sorun, çizim komutlarının tek bir hücrede birleştirilmesiyle çözüldü:

In [1]:  %matplotlib inline
         import matplotlib
         import matplotlib.pyplot as plt
         import numpy as np
In [2]:  x = np.array([1, 3, 4])
         y = np.array([1, 5, 3])
In [3]:  fig = plt.figure()
         ax = fig.add_subplot(1, 1, 1)
         ax.scatter(x, y)
Out[3]:  <matplotlib.collections.PathCollection at 0x12341234>
         # AND HERE APPEARS THE PLOT AS DESIRED :)
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.