Quelle est la méthode recommandée pour tracer: matplotlib ou pylab? [fermé]

88

Je vois que je peux tracer en Python en utilisant soit:

import matplotlib
matplotlib.pyplot.plot(...)

Ou:

import pylab
pylab.plot(...)

Les deux utilisent le même code de traçage matplotlib .

Alors, laquelle de celles-ci les développeurs / documents de Matplotlib recommandent actuellement comme meilleure méthode pour tracer? Pourquoi?

Ashwin Nanjappa
la source
1
duplicata possible de Quelle est la différence entre pylab et pyplot?
tacaswell
9
Duplication auto-référentielle?
Mad Physicist
4
Cela ne devrait pas être fermé comme une opinion. Il y a maintenant une réponse claire de la documentation Matplotlib: Toujours utilisermatplotlib.pyplot
Bernhard

Réponses:

104

Documents officiels: Matplotlib, pyplot et pylab: comment sont-ils liés?

Ces deux importations se résument à faire exactement la même chose et exécuteront exactement le même code, ce sont juste des façons différentes d'importer les modules.

Notez également qu'il matplotliba deux couches d'interface, une couche de machine d'état gérée par pyplotet l'interface OO pyplotest construite au-dessus de, voir Comment puis-je attacher une fonction pyplot à une instance de figure?

pylabest un moyen propre d'importer en masse toute une série de fonctions utiles (la pyplotfonction de machine d'état, la plupart numpy) dans un seul espace de nom. La principale raison pour laquelle cela existe (à ma connaissance) est de travailler avec ipythonpour créer un très beau shell interactif qui réplique plus ou moins MATLAB (pour faciliter la transition et parce qu'il est bon pour jouer). Voir pylab.pyetmatplotlib/pylab.py

À un certain niveau, c'est purement une question de goût et dépend un peu de ce que vous faites.

Si vous n'intégrez pas une interface graphique (soit en utilisant un backend non interactif pour les scripts en masse, soit en utilisant l'un des backends interactifs fournis), la chose typique à faire est

import matplotlib.pyplot as plt
import numpy as np

plt.plot(....)

ce qui ne pollue pas l'espace de nom. Je préfère cela pour pouvoir savoir d'où viennent les choses.

Si tu utilises

ipython --pylab

cela équivaut à courir

from pylab import * 

Il est maintenant recommandé que pour les nouvelles versions de ipythonvous utilisez

ipython --matplotlib

qui mettra en place tous les détails d'arrière-plan appropriés pour que les backends interactifs fonctionnent correctement, mais n'importera rien en masse. Vous devrez importer explicitement les modules souhaités.

import numpy as np
import matplotlib.pyplot as plt

est un bon début.

Si vous matplotlibintégrez une interface graphique, vous ne voulez pas importer pyplot car cela lancera des boucles principales supplémentaires dans l'interface graphique, et ce que vous devez importer dépend exactement de ce que vous faites.

Tacaswell
la source
19
La différence entre pylab et pyplot est que l'ancien importe numpy dans son espace de noms. C'était pour le faire se comporter de manière plus similaire avec matlab. Il est préférable d'utiliser pyplot au lieu de pylab car il est plus propre.
Christian Alis
8

La documentation sur https://matplotlib.org/faq/usage_faq.html#matplotlib-pyplot-and-pylab-how-are-they-related , qui décrit également la différence entre pyglot et pylab, déclare: "Bien que de nombreux exemples utilisent pylab, il n'est plus recommandé. " . Donc, je ne vois aucune raison d'utiliser pylab ou de m'inquiéter à ce sujet.

Apostolos
la source
1
Cela devrait être la réponse acceptée. La documentation «officielle» est le puits, et elle dit que pylab n'est plus recommandé.
dturvene