Tidak ada jendela plot di matplotlib

90

Saya baru saja menginstal matplotlib di Ubuntu 9.10 menggunakan sistem paket sinaptik. Namun, ketika saya mencoba contoh sederhana berikut

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

Saya tidak mendapatkan jendela plot. Adakah ide tentang cara menampilkan jendela plot?

DR
sumber
8
pylab tidak menampilkan plot secara default, karena menggambar dan memperbarui secara konstan bisa jadi mahal. Anda perlu melakukan secara eksplisit show().
Alok Singhal
1
Beberapa dokumentasi resmi tentang masalah ini: matplotlib.org/faq/…
stephenbez

Jawaban:

139

Anda bisa mengetik

import pylab
pylab.show()

atau lebih baik, gunakan ipython -pylab.


Karena penggunaan pylab sudah tidak disarankan lagi , solusinya sekarang adalah

import matplotlib.pyplot as plt

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

plt.show()
Peter
sumber
38

pylab.show() berfungsi tetapi blok (Anda harus menutup jendela).

Solusi yang jauh lebih mudah adalah melakukan pylab.ion()(mode interaktif aktif) saat Anda memulai: semua perintah (pylab ekuivalen) pyplot.*segera menampilkan plotnya. Informasi lebih lanjut tentang mode interaktif dapat ditemukan di situs web resmi.

Saya juga kedua menggunakan yang lebih nyaman ipython -pylab( --pylab, dalam versi yang lebih baru), yang memungkinkan Anda untuk melewati from … import …bagian ( %pylabberfungsi, juga, dalam versi IPython yang lebih baru).

Eric O Lebigot
sumber
1
tetapi Anda harus menelepon pylab.show()terlebih dahulu untuk membuka gambar.
Steve Tjoa
3
@ Steve: pengalaman saya adalah bahwa ini sangat bergantung pada backend. Di Mac OS X dengan shell Python biasa, saya tidak perlu melakukan show () (atau draw (), dalam hal ini): plot () membuka jendela baru.
Eric O Lebigot
1
Ah baiklah. Poin yang bagus. Saya hanya memiliki pengalaman dengan ipython di Linux.
Steve Tjoa
draw () tidak berfungsi untuk saya, tetapi pylab.ion () berfungsi. Saya menggunakan
OSx
Hal yang sama di sini di shell Python dengan Matplotlib terbaru. Saya memperbarui jawaban saya, terima kasih.
Eric O Lebigot
17

Coba ini:

import matplotlib
matplotlib.use('TkAgg') 

SEBELUM mengimpor pylab

linhares
sumber
11
Apa yang harus dilakukan ini?
Nathan Fellman
11

Potongan kode di bawah ini berfungsi pada Eclipse dan shell Python:

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()
neobot
sumber
Seperti yang diklarifikasi oleh banyak jawaban lain, ini mungkin berfungsi untuk Anda saat ini, tetapi semuanya tergantung pada bagaimana backend matplotlib Anda dikonfigurasi.
nealmcb
9

Ada kesalahan yang muncul? Ini mungkin masalah karena tidak menyetel backend. Anda dapat mengaturnya dari interpreter Python atau dari file config ( .matplotlib/matplotlibrc) di direktori home Anda.

Untuk mengatur backend dalam kode bisa Anda lakukan

import matplotlib
matplotlib.use('Agg')

dengan 'Agg' adalah nama backend. Backend mana yang ada bergantung pada instalasi dan OS Anda.

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

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

Matti Lyra
sumber
1
Benar-benar bekerja, terima kasih. Untuk lebih jelasnya, hal paling sederhana yang harus dilakukan (setelah Anda tahu ini tentu saja berfungsi) adalah mengatur backend Anda .matplotlib/matplotlibrcke backend: Agg. Maka Anda tidak perlu secara eksplisit melakukannya usesetiap kali :)
dsummersl
2

IPython modern menggunakan --matplotlibargumen " " dengan parameter backend opsional. Defaultnya adalah "auto", yang biasanya cukup baik di Mac dan Windows. Saya belum mengujinya di Ubuntu atau distribusi Linux lainnya, tetapi saya berharap ini berfungsi.

ipython --matplotlib
calvinvette.dll
sumber
0

Jika Anda mengalami masalah saat pylab.show()membekukan jendela IPython (ini mungkin khusus Mac OS X; tidak yakin), Anda dapat cmd-c di jendela IPython, beralih ke jendela plot, dan jendela akan keluar.

Rupanya, panggilan ke depan pylab.show()tidak akan membekukan jendela IPython, hanya panggilan pertama. Sayangnya, saya telah menemukan bahwa perilaku jendela plot / interaksi dengan show () berubah setiap kali saya menginstal ulang matplotlib, jadi solusi ini mungkin tidak selalu berlaku.

keflavich.dll
sumber
0

Jika Anda memulai IPython dengan --pylabopsi tersebut, Anda tidak perlu menelepon show()atau draw(). Coba ini:

ipython  --pylab=inline
Scofield77
sumber
0

--pylabtidak lagi berfungsi untuk Jupyter , tetapi untungnya kami dapat menambahkan tweak pada ipython_config.pyfile untuk mendapatkan keduanya pylabserta autoreloadfungsionalitas.

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

Jika Anda pengguna Anaconda dan Spyder maka solusi terbaik untuk Anda adalah:

Alat -> Preferensi -> Konsol Ipython -> Bagian Grafis

Kemudian di bagian Dukungan untuk grafik (Matplotlib) :

pilih dua opsi yang tersedia

dan di Graphics Backend :

pilih Otomatis

PyMatFlow
sumber
-5

Kemungkinan lain saat menggunakan easy_install adalah Anda membutuhkan matplotlib versi terbaru. Mencoba:

import pkg_resources
pkg_resources.require("matplotlib")

sebelum Anda mengimpor matplotlib atau salah satu modulnya.

ramsey0
sumber
2
Ini hanya memastikan matplotlibsudah terpasang, tidak mempengaruhi bagaimana penanganan jendela dilakukan.
tacaswell