Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Matplotlib 축 눈금(tick)에서 소수점 이하 자릿수 제거하는 방법

Matplotlib에서 그래프를 그리다 보면 x축이나 y축 눈금에 소수점 아래 불필요한 숫자가 함께 표시되어 가독성이 떨어지는 경우가 있습니다. 이럴 때 축 눈금을 정수 형태로만 깔끔하게 표시하는 방법을 알아보겠습니다.

해결 절차

  • 그림(figure) 크기를 설정하고 서브플롯(subplot) 주변 및 사이의 여백(padding)을 조정합니다.
  • NumPy를 사용하여 x, y 데이터 포인트를 생성합니다.
  • figure와 subplot 집합을 생성합니다.
  • x축 눈금 레이블(xtick labels)을 정수로만 표시하기 위해 x.astype(int) 메서드를 사용합니다.
  • show() 메서드를 호출하여 그래프를 화면에 출력합니다.

예제 코드

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

x = np.array([1.110, 2.110, 4.110, 5.901, 6.00, 7.90, 8.90])
y = np.array([2.110, 1.110, 3.110, 9.00, 4.001, 2.095, 5.890])

fig, ax = plt.subplots()

ax.plot(x, y)

ax.set_xticklabels(x.astype(int))

plt.show()

코드 설명

핵심은 set_xticklabels() 함수입니다. NumPy 배열에 astype(int)를 적용하면 각 요소의 소수점 이하 값이 버려지고 정수로 변환됩니다. 예를 들어 1.110은 1로, 5.901은 5로 변환됩니다. 이렇게 변환된 정수 배열을 x축 눈금 레이블로 지정하면, 축에는 소수점 없이 정수만 표시됩니다.

또한 plt.rcParams["figure.figsize"]로 그림 크기를 지정하고, figure.autolayout 옵션을 True로 설정하면 레이블이 잘리지 않도록 여백이 자동으로 조절됩니다.

참고 사항

눈금 개수와 데이터 포인트 개수가 일치하지 않으면 경고가 발생할 수 있습니다. 이 경우 ax.set_xticks(x)를 먼저 호출한 후 레이블을 지정하거나, matplotlib.ticker.FormatStrFormatter('%d') 또는 FuncFormatter를 사용하는 방법도 좋은 대안입니다. 특히 데이터 범위가 넓어 눈금이 자동으로 재조정되는 상황에서는 Formatter 방식이 더 안정적입니다.