matplotlib tidak menampilkan gambar saya walaupun saya panggil pyplot.show ()

175

Bantuan diperlukan di matplotlib. Ya, saya tidak lupa memanggil pyplot.show ().

$ ipython --pylab

import matplotlib.pyplot as p 
p.plot(range(20), range(20))

Ia kembali matplotlib.lines.Line2D at 0xade2b2csebagai output.

p.show()

Tidak ada yang terjadi. Tidak ada pesan kesalahan. Tidak ada jendela baru. Tidak ada. Saya menginstal matplotlibdengan menggunakan pip dan saya tidak menerima pesan kesalahan apa pun.

Detail:

Saya menggunakan,

  • Ubuntu
  • IPython v0.11
  • Python v2.6.6
  • matplotlib v1.0.1
Baskaya
sumber

Jawaban:

177

Jika saya mengatur backend saya ke templatedalam ~/.matplotlib/matplotlibrc, maka saya dapat mereproduksi gejala Anda:

~ / .matplotlib / matplotlibrc:

# backend      : GtkAgg
backend      : template

Perhatikan bahwa file tersebut matplotlibrcmungkin tidak ada di direktori ~/.matplotlib/. Dalam hal ini, kode berikut menunjukkan di mana tempatnya:

>>> import matplotlib
>>> matplotlib.matplotlib_fname()

In [1]: import matplotlib.pyplot as p

In [2]: p.plot(range(20),range(20))
Out[2]: [<matplotlib.lines.Line2D object at 0xa64932c>]

In [3]: p.show()

Jika Anda mengedit ~/.matplotlib/matplotlibrcdan mengubah backend ke sesuatu seperti GtkAgg, Anda akan melihat plot. Anda dapat membuat daftar semua backend yang tersedia di mesin Anda

import matplotlib.rcsetup as rcsetup
print(rcsetup.all_backends)

Seharusnya mengembalikan daftar seperti:

['GTK', 'GTKAgg', 'GTKCairo', 'FltkAgg', 'MacOSX', 'QtAgg', 'Qt4Agg',
'TkAgg', 'WX', 'WXAgg', 'CocoaAgg', 'agg', 'cairo', 'emf', 'gdk', 'pdf',
'ps', 'svg', 'template']

Referensi:

unutbu
sumber
2
Saya mencoba tetapi saya mendapat kesalahan seperti:ImportError: No module named _backend_gdk
Baskaya
6
Maaf atas banyak komentar. Berhasil. Saya mencoba Qt4Agg dan menekan. Terima kasih :) .. Hal terakhir, di mana saya dapat menemukan matplotlibrc default atau apakah ada cara untuk membuatnya?
Baskaya
Maaf atas keresahannya. Saya rasa saya menemukan
Baskaya
8
Jawaban ini sudah tua, konfigurasi sekarang harus di ~/.config/matplotlib/matplotlibrc(untuk python 3, setidaknya). Saya hanya punya masalah terkait, dan saya pikir itu disebabkan oleh penggunaan matplotlib di python 2.7, yang membuat ~/.matplotlib/direktori, dan menghentikan python 3 dari membaca konfigurasi ~/.config/matplotlib/. Menghapus ~/.matplotlib/masalah untuk saya.
naught101
5
6 tahun kemudian dan masalah ini masih ada ... Sekarang saya ingat mengapa saya membenci Python: masalah pada setiap baris kode.
pookie
70

Saya mengalami masalah yang sama persis pada Ubuntu 12.04, karena saya menginstal matplotlib (dalam virtualenv) menggunakan

pip install matplotlib

Singkatnya, saran saya adalah: jangan mencoba memasang matplotlib menggunakan pip atau dengan tangan; biarkan manajer paket nyata (mis. apt-get / synaptic) menginstalnya dan semua dependensinya untuk Anda.

Sayangnya, backend matplotlib (metode alternatif untuk membuat plot Anda) memiliki semua jenis dependensi yang tidak akan ditangani oleh pip. Lebih buruk lagi, gagal diam-diam; yaitu, pip install matplotlibtampaknya berhasil menginstal matplotlib. Tetapi ketika Anda mencoba menggunakannya (misalnya pyplot.show()), tidak ada jendela plot yang akan muncul. Saya mencoba semua backend berbeda yang disarankan orang di web (Qt4Agg, GTK, dll.), Dan semuanya gagal (yaitu ketika saya mencoba mengimpor matplotlib.pyplot, saya dapatkan ImportErrorkarena mencoba mengimpor beberapa dependensi yang hilang). Saya kemudian meneliti bagaimana cara menginstal dependensi tersebut, tetapi itu hanya membuat saya ingin menyerah menggunakan pip (dalam virtualenv) sebagai solusi instalasi yang layak untuk setiap paket yang memiliki dependensi paket non-Python.

Seluruh pengalaman mengirim saya merangkak kembali ke apt-get / synaptic (yaitu manajer paket Ubuntu) untuk menginstal perangkat lunak seperti matplotlib. Itu bekerja dengan sempurna. Tentu saja, itu berarti Anda hanya dapat menginstal ke direktori sistem Anda, tidak ada kebaikan virtualv, dan Anda terjebak dengan versi yang didistribusikan Ubuntu, yang mungkin jauh di belakang versi saat ini ...

Christopher Lee
sumber
2
Jawaban Anda adalah BIT panjang, Anda dapat mempertimbangkan untuk mempersingkat OP.
theJollySin
5
Sudahkah Anda mencoba --system-site-packagesopsi ini?
Tianyang Li
1
% Christopher Lee Masalah dengan angka tidak menunjukkan tanpa kesalahan / keluhan lain adalah karena backend default ketika Anda pip installadalah agg. Saya tidak yakin mengapa, tetapi Anda dapat mengubahnya sesuai jawaban unutbu. pipmemiliki keuntungan utama menginstal versi terbaru - aptmenginstal versi yang sudah ketinggalan zaman. Terkadang ada perbaikan bug / fitur baru yang Anda inginkan / butuhkan.
drevicko
2
Hanya menonaktifkan virtualenvbekerja! Dan saya dapat menginstal matplotlib 1.4 dari source systemwide (di Ubuntu), tetapi tidak di bawah virtualenv.
Osa
1
Dan apa solusinya bagi kita yang terjebak di mesin Windows yang tidak bisa menggunakan apt-get?
ale19
34

% matplotlib sebaris

Bagi saya yang bekerja dengan notebook, menambahkan baris di atas sebelum alur bekerja.

grampus
sumber
Saya perlu menggunakan %pylab inlinenotebook saya seperti yang dicatat oleh @Bhanu Pratap Singh
Reed Sandberg
10

Untuk referensi di masa depan,

Saya mengalami masalah yang sama - pylab tidak muncul di bawah ipython. Masalahnya diperbaiki dengan mengubah file konfigurasi ipython {ipython_config.py}. Dalam file konfigurasi

c.InteractiveShellApp.pylab = 'auto'

Saya mengubah 'otomatis' menjadi 'qt' dan sekarang saya melihat grafik

segera
sumber
5
atau menggunakan "ipython --pylab = qt"
andrew cooke
Ini akan bekerja, tapi itu hanya solusi parsial: Jika backend default Anda adalah agg, saya tidak melakukan hal yang %pylab inlineakan bekerja, dan tidak akan plot menunjukkan ketika Anda menjalankan skrip secara langsung yaitu: python myscript.py. jawaban unutbu harus memperbaikinya di mana-mana.
drevicko
8

Apa yang memecahkan masalah saya hanya menggunakan dua baris di bawah ini di notebook ipython di bagian atas

%matplotib inline
%pylab inline

Dan itu berhasil. Saya menggunakan Ubuntu16.04 dan ipython-5.1

Bhanu Pratap Singh
sumber
Harap perbaiki format komentar di atas ... Terima kasih.
Saras Arya
Selesai - Meskipun blogpost ini menghancurkan pylab tetapi Anda akan mendapatkan ide mengapa menambahkan %pylab inlinemembuatnya berfungsi.
Bhanu Pratap Singh
2

Saya harus menginstal matplotlib dari sumber untuk menjalankannya. Instruksi kunci (dari http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/ ) adalah:

$ workon plotting
$ pip uninstall matplotlib
$ git clone https://github.com/matplotlib/matplotlib.git
$ cd matplotlib
$ python setup.py install

Dengan mengubah backend, seperti yang dikatakan @unutbu, saya hanya mengalami banyak masalah dengan semua backend yang berbeda tidak berfungsi baik.

Rikki
sumber
1
Bekerja memperlakukan, hanya menggunakan git clone dan python setup langkah tetapi ketika saya menjalankannya dengan plt.show () tidak ada masalah.
Steve
2

Menambahkan dua baris berikut sebelum mengimpor pylab tampaknya bekerja untuk saya

import matplotlib
matplotlib.use("gtk")

import sys
import pylab
import numpy as np
Pau
sumber
0

Pastikan skrip startup ini diaktifkan: (Preferensi> Konsol> Opsi Tingkat Lanjut)

/usr/lib/python2.7/dist-packages/spyderlib/scientific_startup.py

Jika PYTHONSTARTUP standar diaktifkan, Anda tidak akan memiliki plot interaktif

Covich
sumber
0

Mirip dengan @Rikki, saya memecahkan masalah ini dengan memutakhirkannya matplotlibdengan pip install matplotlib --upgrade. Jika Anda tidak dapat memutakhirkan pencopotan pemasangan dan penginstalan ulang mungkin berhasil.

pip uninstall matplotlib
pip install matplotlib
Seanny123
sumber
0

Bagi saya masalah terjadi jika saya hanya membuat file kosong di matplotlibrc bawah ~/.matplotlibpada macOS. Menambahkan "backend: macosx" di dalamnya memperbaiki masalah.

Saya pikir itu adalah bug: jika backendtidak ditentukan dalam saya matplotlibrcitu harus mengambil nilai default.

an0
sumber
0

Setelah menjalankan kode Anda termasuk:

import pylab as p
p.show()
Shrish Trivedi
sumber
0

Saya menemukan bahwa saya perlu window = Tk()dan kemudianwindow.mainloop()

R Keene
sumber
Bisakah Anda menambahkan sedikit penjelasan? Bagaimana solusi Anda berbeda dari yang lain?
Ralf Stubner
-2

Untuk Ubuntu 12.04:

sudo apt-get install python-qt4
virtualenv .env --no-site-packages
source .env/bin/activate
easy_install -U distribute
ln -s /usr/lib/python2.7/dist-packages/PyQt4 .
ln -s /usr/lib/python2.7/dist-packages/sip.so .
pip install matplotlib
nanvel
sumber