web-dev-qa-db-fra.com

Les graphiques Matplotlib ne sont pas affichés lors de l'exécution d'un fichier depuis le terminal bash

Les graphiques sont normalement affichés lorsque j'exécute des fichiers à partir du shell ipython ou d'un ordinateur portable ipython, mais ils ne s'affichent pas lorsque j'exécute le fichier à partir d'un terminal bash. Tout le reste fonctionne correctement lorsqu'il est exécuté à partir d'un terminal bash.

Exemple python (trial.py):

import matplotlib.pyplot as plt

print 'please, show my graph'

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

plt.show()

C'est ce que je reçois (l'intrigue ne se présente pas):

[~/Desktop]$ python trial.py
please, show my graph
[~/Desktop]$

Si je fais

import matplotlib
matplotlib.use('TkAgg')

avant d'importer pyplot, une fenêtre s'ouvre et se ferme immédiatement lorsque je l'exécute depuis le terminal.

J'ai essayé différentes méthodes d'importation de modules sans succès:

import matplotlib.pyplot as plt
import matplotlib.pylab as plt
from matplotlib import pyplot as plt
from matplotlib import pylab as plt

J'ai la fonction plt.show () dans mon fichier.

Savez-vous comment je peux résoudre ce problème?

Quelques informations sur les versions et l'installation:

Je suis sur un Mac OSX 10.11.3.

In [61]: print matplotlib.__file__
/usr/local/lib/python2.7/site-packages/matplotlib/__init__.pyc

In [62]: print matplotlib.__version__
1.4.2

In [64]: print sys.version
2.7.9 (default, Apr  7 2015, 07:58:25)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]

In [65]: matplotlib.get_backend()
Out[65]: u'MacOSX'
30
drake

Vous devez ajouter matplotlib.pyplot.show() dans votre code pour afficher les tracés en mode non interactif. Voir la documentation sur http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.show

Après d'autres informations de l'OP, le blocage devait être activé explicitement à l'aide de plt.show(block=True).

48
Munir