2020-08-21

matplotlib 기초지식 - 일반적인 컨셉과 Figure의 구성

일반적인 컨셉

matplotlib는 신규 사용자들에게 부담이 될 수 있을 정도로 광범위한 코드베이스를 담고 있다. 그러나 대부분의 matplotlib는 매우 간단한 컨셉의 프레임워크와 몇 가지 중요한 사항에 대한 지식만으로도 충분이 이해할 수 있다.

Plotting에는 가장 일반적인 수준(예를 들어서, 2차원 배열 그리기)부터 아주 특수한 수준 (예를 들어서, 화면 픽셀을 빨간색으로 칠하기)까지 다양한 수준의 작업을 수행할 수 있다. Plotting 패키지의 목적은 필요한 모든 제어방법을 통해 가능한 한 쉽게 데이터를 시각화할 수 있도록 지원하는 것이다. 즉, 대부분의 경우엔 상대적으로 높은 수준의 명령어를 사용하지만 필요한 경우엔 저수준 명령어도 사용할 수 있다.

matplotlib의 모든 것들은 계층화되어있다. 가장 높은 계층엔 유한상태기계 환경인 matplotlib.pyplot 모듈이 있다. 이 수준에서는 현재 figure의 plot에 선, 이미지, 글자 등을 추가할 수 있는 기본적인 함수가 들어있다.

그 다음으로 하위 계층에서는 객체지향 인터페이스의 첫 번째 수준으로, 여기에서 pyplot은 Figure 생성과 같은 몇 가지 기능에만 사용되며, 사용자는 Figure 및 axes 객체를 명시적으로 생성하고 다룰 수 있다. 이 수준에서 사용자는 pyplot을 사용해 figure를 만들고 해당 객체를 통해 하나 이상의 axes 객체를 생성할 수 있다. 여기에서 생성된 axes 객체는 대부분의 plotting 작업에서 사용된다.



출처 - matplotlib.org

Figure의 구성

Figure는 모든 하위 axes, artists, canvas들을 트래킹한다(각 요소들에 대한 요약은 아랫문단을 참조). Canvas가 뭔지 몰라도 염려할 필요는 없다, canvas가 plot을 그리기 위한 동작을 수행하긴 하지만 실제 사용자에게 보이는 일은 매우 드물다. Figure는 여러 개의 Axes을 가질 수 있으며, 적어도 1개 이상은 있어야 실제적으로 유용할 수 있다.

Pyplot을 이용해 새로운 Figure를 그리는 가장 쉬운 방법은 아래와 같다:




Axes

이것이 바로 일반적으로 생각되는 'plot'이며, 데이터공간이 들어있는 이미지 영역을 일컫는다. Figure는 여러 개의 Axes를 포함할 수 있지만, Axes 객체는 단 하나의 Figure에만 존재할 수 있다. Axes는 2D에서 2개, 3D에서 3개의 Axis를 포함한다. Axes와 Axis의 차이에 유의해야 한다. 데이터의 한계점은 set_xlim()set_ylim()으로 정의할 수 있다. 각 Axes들은 title을 갖고 있어서 set_title()set_xlabel() 등으로 설정 가능하다.



Axis

숫자 선 모양의 객체들을 말한다. 그래프가 표현할 수 있는 한계를 설정하고 눈금(축의 표시 및 틱)을 생성한다. Tick의 위치는 Locator 객체에 의해 결정되며, 눈금 레이블 문자열은 Formatter에 의해 형식이 지정된다. 정확한 Locator와 Formatter를 조합해서 눈금 위치와 레이블을 매우 세밀하게 제어할 수 있게 만들어준다.



Artist

기본적으로 그림에서 볼 수 있는 모든 것들이 Artist이다(Figure, Axes, Axis 객체 등등). Artist 객체는 Text 객체, Line2D 객체, collection 객체, Patch 객체 등을 포함하고 있다. 그림이 렌더링되면 모든 Artist가 Canvas에 그려진다. 대부분의 Artist는 Axes과 결합되어 있다. 이러한 Artist들은 여러 축에서 공유하거나 혹은 다른 축으로 이동할 수 없다.


댓글 없음:

댓글 쓰기