matplotlib non mostra i miei disegni anche se chiamo pyplot.show ()


175

Aiuto richiesto su matplotlib. Sì, non ho dimenticato di chiamare pyplot.show ().

$ ipython --pylab

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

Ritorna matplotlib.lines.Line2D at 0xade2b2ccome output.

p.show()

Non succede nulla. Nessun messaggio di errore Nessuna nuova finestra Niente. Io installomatplotlib usando pip e non ho ricevuto alcun messaggio di errore.

Dettagli:

Io uso,

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

Risposte:


177

Se imposto il mio backend su templatein ~/.matplotlib/matplotlibrc, posso riprodurre i tuoi sintomi:

~ / .Matplotlib / matplotlibrc:

# backend      : GtkAgg
backend      : template

Si noti che il file matplotlibrcpotrebbe non essere nella directory ~/.matplotlib/. In questo caso, il codice seguente mostra dove si trova:

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

Se modifichi ~/.matplotlib/matplotlibrce cambi il backend in qualcosa del genere GtkAgg, dovresti vedere una trama. Puoi elencare tutti i backend disponibili sul tuo computer con

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

Dovrebbe restituire un elenco come:

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

Riferimento:


2
Ho provato ma ho ricevuto un errore simile a:ImportError: No module named _backend_gdk
Baskaya

6
Ci scusiamo per molti commenti. Funziona. Ho provato Qt4Agg e ho colpito. Grazie :) .. Ultima cosa, dove posso trovare matplotlibrc predefinito o c'è un modo per crearlo?
Baskaya,

Ci scusiamo per il disordine. Penso di aver trovato
Baskaya

8
Questa risposta è vecchia, ora dovrebbe essere presente la configurazione ~/.config/matplotlib/matplotlibrc(almeno per Python 3). Ho appena avuto un problema correlato e penso che sia stato causato dall'utilizzo di matplotlib in Python 2.7, che ha creato una ~/.matplotlib/directory e ha impedito a Python 3 di leggere la configurazione ~/.config/matplotlib/. L'eliminazione ha ~/.matplotlib/risolto il problema per me.
nulla101

5
6 anni dopo e questo problema esiste ancora ... Ora ricordo perché odio Python: un problema su ogni riga di codice.
pookie,

70

Ho riscontrato lo stesso identico problema su Ubuntu 12.04, perché ho installato matplotlib (all'interno di un virtualenv) usando

pip install matplotlib

Per farla breve, il mio consiglio è: non provare a installare matplotlib usando pip o manualmente; lascia che un vero gestore di pacchetti (ad esempio apt-get / synaptic) lo installi e tutte le sue dipendenze per te.

Sfortunatamente, i backend di matplotlib (metodi alternativi per rendere effettivamente i tuoi grafici) hanno tutti i tipi di dipendenze che pip non affronterà. Ancora peggio, fallisce silenziosamente; questo è,pip install matplotlib sembra installare matplotlib correttamente. Ma quando si tenta di utilizzarlo (ad esempio pyplot.show()), non verrà visualizzata alcuna finestra della trama. Ho provato tutti i diversi backend suggeriti dalle persone sul web (Qt4Agg, GTK, ecc.), E tutti hanno fallito (cioè quando ho provato a importare matplotlib.pyplot, ottengo ImportErrorperché sta cercando di importare alcune dipendenze mancanti). Ho quindi cercato come installare quelle dipendenze, ma mi ha fatto venire voglia di smettere di usare pip (all'interno di virtualenv) come soluzione di installazione praticabile per qualsiasi pacchetto con dipendenze di pacchetti non Python.

L'intera esperienza mi ha fatto tornare indietro a apt-get / synaptic (cioè il gestore di pacchetti Ubuntu) per installare software come matplotlib. Funzionava perfettamente. Ovviamente, ciò significa che puoi installare solo nelle tue directory di sistema, nessuna bontà virtuale, e sei bloccato con le versioni che Ubuntu distribuisce, che potrebbe essere molto indietro rispetto alla versione corrente ...


2
La tua risposta è lunga BIT, potresti prendere in considerazione l'accorciamento del PO.
theJollySin il

5
Hai provato l' --system-site-packagesopzione?
Tianyang Li,

1
% Christopher Lee Il problema con le figure non mostrando senza alcun errore / altra lamentela è che il backend predefinito quando si pip installè agg. Non sono sicuro del perché, ma puoi cambiarlo secondo la risposta di unutbu. pipha il grande vantaggio di installare una versione aggiornata: aptinstalla una versione obsoleta. A volte ci sono correzioni di bug / nuove funzionalità che desideri / necessiti.
drevicko,

2
Solo disattivazione ha virtualenvfunzionato! E sono stato in grado di installare matplotlib 1.4 dal sorgente a livello di sistema (su Ubuntu), ma non sotto virtualenv.
osa,

1
E qual è la soluzione per quelli di noi bloccati su macchine da lavoro Windows che non possono usare apt-get?
Ale19,

34

% matplotlib inline

Per me lavorare con il notebook, aggiungendo la riga sopra prima che la trama funzioni.


Avevo bisogno di usare %pylab inlinesul mio taccuino come notato da @Bhanu Pratap Singh
Reed Sandberg

10

Per riferimento futuro,

Ho riscontrato lo stesso problema: pylab non veniva visualizzato sotto ipython. Il problema è stato risolto modificando il file di configurazione di ipython {ipython_config.py}. Nel file di configurazione

c.InteractiveShellApp.pylab = 'auto'

Ho cambiato 'auto' in 'qt' e ora vedo i grafici


5
o usando "ipython --pylab = qt"
andrew cooke il

Ciò funzionerà, ma è solo una soluzione parziale: se il backend predefinito è agg, non lo faccio cosa che %pylab inlinefunziona, né trame mostrare quando si esegue gli script direttamente vale a dire: python myscript.py. la risposta di unutbu dovrebbe risolverlo ovunque.
drevicko,


8

Ciò che ha risolto il mio problema è stato semplicemente usare le due righe sottostanti nel notebook ipython in alto

%matplotib inline
%pylab inline

E ha funzionato. Sto usando Ubuntu16.04 e ipython-5.1


Correggi la formattazione dei commenti sopra ... Grazie.
Saras Arya,

Fatto - Anche se questo post sul blog prende di mira pylab ma avrai un'idea del perché l'aggiunta lo %pylab inlinefaccia funzionare.
Bhanu Pratap Singh,

2

Ho dovuto installare matplotlib dalla fonte per farlo funzionare. Le istruzioni chiave (da http://www.pyimagesearch.com/2015/08/24/resolved-matplotlib-figures-not-showing-up-or-displaying/ ) sono:

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

Modificando il back-end, come dice @unutbu, mi sono appena imbattuto in un sacco di problemi con tutti i diversi back-end che non funzionavano.


1
Ha funzionato a meraviglia, usato solo i passaggi di installazione di git clone e python ma quando lo eseguo con plt.show () nessun problema.
Steve

2

Aggiungere le seguenti due righe prima di importare pylab sembra funzionare per me

import matplotlib
matplotlib.use("gtk")

import sys
import pylab
import numpy as np

0

Assicurati di avere abilitato questo script di avvio: (Preferenze> Console> Opzioni avanzate)

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

Se lo standard PYTHONSTARTUP è abilitato non avrai un grafico interattivo


0

Simile a @Rikki, ho risolto questo problema aggiornando matplotlibcon pip install matplotlib --upgrade. Se non riesci ad aggiornare, la disinstallazione e la reinstallazione potrebbero funzionare.

pip uninstall matplotlib
pip install matplotlib

0

Per me il problema si verifica se creo semplicemente un file vuoto su macOS. L'aggiunta di "backend: macosx" risolve il problema.matplotlibrc~/.matplotlib

Penso che sia un bug: se backendnon è specificato in my matplotlibrcdovrebbe assumere il valore predefinito.



0

Ho scoperto che avevo bisogno window = Tk()e poiwindow.mainloop()


Puoi aggiungere qualche spiegazione? In che modo la tua soluzione è diversa dalle altre?
Ralf Stubner,

-2

Per 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.