Jaki jest zalecany sposób tworzenia wykresów: matplotlib czy pylab? [Zamknięte]

88

Widzę, że mogę drukować w Pythonie za pomocą:

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

Lub:

import pylab
pylab.plot(...)

Oba używają tego samego kodu kreślenia matplotlib .

Którą z nich obecnie programiści / dokumentatorzy Matplotlib zalecają jako lepszą metodę kreślenia? Czemu?

Ashwin Nanjappa
źródło
1
possible duplicate of Jaka jest różnica między pylab i pyplot?
tacaswell
9
Powielanie odniesień do samych siebie?
Mad Physicist,
4
Nie należy tego zamykać jako oparte na opiniach. Istnieje teraz jasna odpowiedź z dokumentów Matplotlib: Zawsze używajmatplotlib.pyplot
Bernhard

Odpowiedzi:

104

Oficjalne dokumenty: Matplotlib, pyplot i pylab: jak są ze sobą powiązane?

Oba te importy sprowadzają się do robienia dokładnie tego samego i będą uruchamiać dokładnie ten sam kod, to tylko różne sposoby importowania modułów.

Zauważ również, że matplotlibma dwie warstwy interfejsu, warstwę automatu stanu zarządzaną przez pyploti interfejs OO pyplotjest zbudowany na wierzchu, zobacz Jak mogę dołączyć funkcję pyplot do instancji figury?

pylabto czysty sposób na zbiorcze importowanie całej masy przydatnych funkcji ( pyplotwiększość funkcji automatu stanów numpy) do jednej przestrzeni nazw. Głównym powodem, dla którego to istnieje (w moim rozumieniu) jest praca ipythonnad stworzeniem bardzo ładnej interaktywnej powłoki, która mniej więcej replikuje MATLAB (aby ułatwić przejście i ponieważ jest dobry do zabawy). Zobacz pylab.pyimatplotlib/pylab.py

Na pewnym poziomie jest to wyłącznie kwestia gustu i zależy trochę od tego, co robisz.

Jeśli nie osadzasz w GUI (używając nieinteraktywnego zaplecza dla skryptów zbiorczych lub jednego z dostarczonych interaktywnych backendów), typową rzeczą do zrobienia jest

import matplotlib.pyplot as plt
import numpy as np

plt.plot(....)

co nie zanieczyszcza przestrzeni nazw. Wolę to, żeby móc śledzić, skąd pochodzą rzeczy.

Jeśli użyjesz

ipython --pylab

jest to równoważne z bieganiem

from pylab import * 

Obecnie zaleca się, aby w nowych wersjach ipythonużywać

ipython --matplotlib

który skonfiguruje wszystkie odpowiednie szczegóły tła, aby interaktywne backendy działały dobrze, ale nie będzie niczego importować zbiorczo. Będziesz musiał jawnie zaimportować żądane moduły.

import numpy as np
import matplotlib.pyplot as plt

to dobry początek.

Jeśli matplotlibosadzasz w gui, nie chcesz importować pyplota, ponieważ spowoduje to uruchomienie dodatkowych głównych pętli gui, a dokładnie to, co powinieneś importować, zależy od tego, co robisz.

tacaswell
źródło
19
Różnica między pylab i pyplot polega na tym, że poprzedni importuje numpy do swojej przestrzeni nazw. Miało to na celu sprawienie, by zachowywał się bardziej podobnie z programem Matlab. Używanie pyplot zamiast pylab jest teraz preferowane, ponieważ jest czystsze.
Christian Alis,
8

Dokumentacja na https://matplotlib.org/faq/usage_faq.html#matplotlib-pyplot-and-pylab-how-are-they-related , która również opisuje różnicę między pyglot i pylab, stwierdza: „Chociaż w wielu przykładach zastosowano pylab, nie jest już zalecane ”. . Nie widzę więc powodu, aby używać pylabu ani się tym martwić.

Apostolos
źródło
1
To powinna być akceptowana odpowiedź. „Oficjalna” dokumentacja to Wellspring i mówi, że Pylab nie jest już zalecany.
dturvene