파이썬 버전 3.7 기준
matplotlib 버전 3.0.3 기준
Matplotlib, pyplot, pylab의 차이점과 코딩스타일 |
Matplotlib, pyplot, pylab의 차이점 |
Matplotlib |
Matplotlib는 전체를 아우르는 패키지이다.
pyplot |
pyplot은 Majtplotlib에서 지원하는 모듈 중 하나이다.
○ pyplot은 사용환경 인터페이스(state-machine interface)를 제공한다.
○ pyplot의 인터페이스는 겉으로는 드러나지 않으면서 자동으로 figure와 axes를 생성하며, 정의된 플롯을 얻을 수 있도록 만들어 준다.
아래 예제는 plot생성을 위한 예제를 보여주며 대화형 모드에서 진행이 되었다.
○ 그림에서 볼 수 있듯이 단순한 코드만 몇 줄로 그래프가 생성된다.
○ 즉, 사용자가 명령을 내리고 명령에 따라 자동으로 그래프가 그려진다.
▷ 그래프를 그리기위해 matplotlib는 사용자가 보이지 않는 곳에서 명령을 받아 그래프를 작성한다.
plot 생성 예제)
# 모듈의 import
In[2]: import numpy as np
In[3]: import matplotlib.pyplot as plt
Backend Qt5Agg is interactive backend. Turning interactive mode on.
# 입력용 배열작성
In[4]: x = np.arange(0,100)
# 플롯데이터 입력
In[5]: plt.plot(x,x, label='first')
Out[5]: [<matplotlib.lines.Line2D at 0x125deff0>]
In[6]: plt.plot(x,x**2, label='second')
Out[6]: [<matplotlib.lines.Line2D at 0xdd4b9f0>]
In[7]: plt.plot(x,x**3, label='third')
Out[7]: [<matplotlib.lines.Line2D at 0x1262f470>]
# 플롯 편집
In[8]: plt.xlabel('x')
Out[8]: Text(0.5,23.4122,'x')
In[9]: plt.ylabel('y')
Out[9]: Text(12.0972,0.5,'y')
In[10]: plt.legend()
Out[10]: <matplotlib.legend.Legend at 0x138baa90>
In[11]: plt.title("Plot")
Out[11]: Text(0.5,1,'Plot')
pylab |
pylab은 matplotlib을 설치할 때 같이 설치되는 모듈 중 하나이다.
○ pylab은 편리한 모듈이며, 대부분의 matplotlib.pyplot과 numpy를 하나의 네임스페이스에 임폴트시킨다.
▷ 편리하긴 하지만 네임스페이스를 오염시킬 우려가 크다.
○ pylab은 앞으로 사라지게될 것으로 보이며, 따라서 이걸 사용하는 것은 권장되지 않는다.
○ 이것 대신 pyplot을 사용하는 것이 추천된다.
※ 비대화형 플롯팅의 경우에는 figure를 생성하기 위해 pyplot을 사용하고 플롯팅을 위해서 객체지향(OO) 인터페이스를 사용하는 것이 좋다.
코딩 스타일 |
여러 예제와 관련 자료를 보다보면, 코딩 스타일과 패턴이 다르다는 것을 찾을 수 있다.
MATLAB 스타일 |
pyplot 스타일 |
○ 매우 심플한 상황에 대해서는, 유일한 이점은 학술적인면만 있다.
○ 더 장황한 스타일에서는 어떤 객체가 어디서 오고 어떻게 진행되는지 더 분명하고 명확하다.
○ 더 복잡한 어플리케이션에 대해서는 분명함과 명확함이 더욱 중요하게된다.
○ 더욱 가치있고 더욱 완벽한 객체지향 인터페이스는 프로그램을 더 작성하기 쉽고 유지하기 쉽게 만든다.
|
|
|
| 참고자료 https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py |
|
|
|
|
'Python > Matplotlib' 카테고리의 다른 글
pyplot 개요와 그래프 작성 기초 - matplotlib(6) (0) | 2019.04.10 |
---|---|
Matplotlib의 성능 개선 방법 - matplotlib(5) (0) | 2019.04.06 |
대화형 모드(interactive mode) - matplotlib(4) (0) | 2019.04.05 |
Matplotlib의 backend(백엔드) - matplotlib(3) (0) | 2019.04.01 |
Matplotlib개요와 plot의 구성요소 - matplotlib(1) (0) | 2019.03.26 |
댓글