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?


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

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


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


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

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


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

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.


0

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

ipython  --pylab=inline

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']

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


-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.


2
Ini hanya memastikan matplotlibsudah terpasang, tidak mempengaruhi bagaimana penanganan jendela dilakukan.
tacaswell
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.