플롯하는 데 권장되는 방법은 matplotlib 또는 pylab입니까? [닫은]


88

내가 할 수있는 볼 플롯 에서 파이썬이 중 하나를 사용하여 :

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

또는:

import pylab
pylab.plot(...)

둘 다 동일한 matplotlib 플로팅 코드를 사용합니다 .

그렇다면 현재 Matplotlib 개발자 / 문서가 더 나은 플로팅 방법으로 권장하는 것은 무엇입니까? 왜?



9
자기 참조 중복?
Mad Physicist 2015 년

4
이것은 의견 기반으로 닫혀서는 안됩니다. 이제 Matplotlib 문서에서 명확한 답변이 있습니다. Always usematplotlib.pyplot
Bernhard

답변:


104

공식 문서 : Matplotlib, pyplot 및 pylab : 어떻게 관련되어 있습니까?

이 두 임포트는 모두 똑같은 일을하고 똑같은 코드를 실행합니다. 모듈을 임포트하는 다른 방법 일뿐입니다.

또한 matplotlib두 개의 인터페이스 계층,에 의해 관리되는 상태 머신 계층 pyplot과 그 위에 OO 인터페이스 pyplot가 구축되어 있습니다. Figure 인스턴스에 pyplot 함수를 연결 하려면 어떻게해야합니까?를 참조하십시오 .

pylab유용한 함수 ( pyplot대부분의 상태 머신 함수 numpy)를 단일 네임 스페이스 로 대량으로 가져 오는 깔끔한 방법 입니다 . 이것이 존재하는 주된 이유는 (내 이해에 따라) ipythonMATLAB을 다소 복제하는 매우 멋진 대화 형 셸을 만들기 위해 함께 작업하는 것입니다 (전환을 더 쉽게 만들고 놀기에 좋기 때문에). 참조 pylab.pymatplotlib/pylab.py

어떤 수준에서 이것은 순전히 취향의 문제이며 당신이하는 일에 따라 조금씩 다릅니다.

GUI에 포함 하지 않는 경우 (대량 스크립트에 비대화 형 백엔드를 사용하거나 제공된 대화 형 백엔드 중 하나를 사용) 일반적으로 수행 할 작업은 다음과 같습니다.

import matplotlib.pyplot as plt
import numpy as np

plt.plot(....)

이름 공간을 오염시키지 않습니다. 나는 물건의 출처를 추적 할 수 있도록 이것을 선호합니다.

사용하는 경우

ipython --pylab

이것은 달리는 것과 같습니다

from pylab import * 

이제 새 버전의 경우 ipython다음을 사용 하는 것이 좋습니다.

ipython --matplotlib

대화 형 백엔드가 잘 작동하도록 모든 적절한 배경 세부 정보를 설정하지만 대량으로 가져 오지는 않습니다. 원하는 모듈을 명시 적으로 가져와야합니다.

import numpy as np
import matplotlib.pyplot as plt

좋은 시작입니다.

matplotlibGUI에 임베딩 하는 경우 추가 GUI 메인 루프를 시작하기 때문에 pyplot을 가져오고 싶지 않으며 정확히 가져와야하는 것은 수행중인 작업에 따라 다릅니다.


19
pylab과 pyplot의 차이점은 전자가 numpy를 네임 스페이스로 가져 오는 것입니다. 이것은 matlab과 더 유사하게 작동하도록하기위한 것입니다. pylab 대신 pyplot을 사용하는 것이 더 깨끗하기 때문에 선호됩니다.
Christian Alis

8

pyglot과 pylab의 차이점도 설명하는 https://matplotlib.org/faq/usage_faq.html#matplotlib-pyplot-and-pylab-how-are-they-related 문서에는 다음과 같이 설명되어 있습니다. "많은 예제에서 pylab, 더 이상 권장되지 않습니다. " . 그래서 pylab 을 사용 하거나 걱정할 이유가 없습니다 .


1
이것은 받아 들여진 대답이어야합니다. "공식"문서는 웰 스프링이며 pylab은 더 이상 권장되지 않는다고 말합니다.
dturvene 19
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.