이전 글(matplotlib 에서 축 내 마음대로 쓰기)에서 유사한 주제를 한 번 다룬 바 있지만, matplotlib에서 축에 숫자의 포맷팅 방법을 사용자 입맛에 맞게 적용하는 방법을 재정리 해본다. 여기서는 파이썬에서 f-string을 이용한 문자열 포맷팅(참고 자료)에 대해서 독자가 충분히 알고 있다고 가정한다.

 

matplotlib에서 축에 표시하는 형식을 커스터마이즈하려면 다음 두 가지 단계만 거치면 된다.

(1) 표현할 포맷팅 형식을 정의 한다. 이 때 함수에는 tick valueposition이라는 두 가지 인자가 들어간다. tick value는 축에 나타나는 값이고, position은 이 tick value를 나타낼 위치를 나타낸다.

(2) matplotlib으로 그리는 도화지(예: plt.figure나 plt.subplots 등으로 정의한 현재 그림)에서 커스터마이즈 할 축을 가져와서 윗 단계에서 정의한 함수를 matplotlib.ticker.FuncFormatter에 넣어준다. 그러면 position 1 부터 마지막 숫자까지 순차적으로 윗 단계에서 정의한 함수의 포맷이 적용된다.

 

예를 들어 y축에 들어가는 숫자를 세 자리 마다 콤마(,)를 찍어 구분하고 싶다면, (1) 세 자릿수 마다 콤마를 찍을 함수를 정의 (2) plt.gca().get_yaxis().set_major_formatter에 위 단계에서 정의한 함수를 적용한다. 아래 코드를 참고 하자.

 

 

참고 링크

1. https://stackoverflow.com/questions/25973581/how-to-format-axis-number-format-to-thousands-with-a-comma
2. https://matplotlib.org/stable/api/ticker_api.html#matplotlib.ticker.FuncFormatter

 

Posted by 공돌이pooh
,