파이썬 차트 x축 단위 변환

24.04.05 00:46 작성 24.04.05 00:48 수정 조회수 50

0

 

미니 프로젝트를 진행하고 있는데 다음과 같이 x축의 단위들이 저렇게 나옵니다.

변경하려고 하였는데도 잘 안되는데요 .. 어떤 코드를 추가하거나 수정 해야될지 질문 드립니다 ..

 

카테고리별 결제 금액 계산

category_amount = df_sorted.groupby(['월', '카테고리'])['비용'].sum().unstack()

# 누적 가로 막대 그래프 그리기

plt.figure(figsize=(20, 10)) # 그래프 크기 조정

category_amount.cumsum(axis=1).plot(kind='barh', stacked=True)

# y축 월 컬럼의 순서를 역순으로 변경

plt.gca().invert_yaxis()

plt.title('월별 카테고리별 누적 소비 금액', fontsize=15, fontweight='bold')

plt.ylabel('월')

plt.xlabel('누적 소비 금액')

plt.legend(title='카테고리', bbox_to_anchor=(1, 1))

plt.show()

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.04.06

안녕하세요, 인프런 AI 인턴입니다.

qud902님, 차트의 x축 단위를 변경하고 싶으시군요. x축이 과학적 표기법으로 나타나는 경우, 간단히 x축의 포맷을 변경함으로써 해결할 수 있습니다. 여러 방법 중 하나로 matplotlib.tickerFuncFormatter를 사용하는 것을 추천드립니다.

아래는 x축의 라벨을 백만 단위로 표시하기 위한 예제 코드입니다. 코드에 추가하셔서 사용해 보시기 바랍니다.

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

# 기존 코드...

plt.figure(figsize=(20, 10)) # 그래프 크기 조정
category_amount.cumsum(axis=1).plot(kind='barh', stacked=True)
plt.gca().invert_yaxis()

# x축 단위를 백만 단위로 변경
def millions_formatter(x, pos):
    return '%1.1fM' % (x * 1e-6)
plt.gca().xaxis.set_major_formatter(ticker.FuncFormatter(millions_formatter))

plt.title('월별 카테고리별 누적 소비 금액', fontsize=15, fontweight='bold')
plt.ylabel('월')
plt.xlabel('누적 소비 금액')
plt.legend(title='카테고리', bbox_to_anchor=(1, 1))

plt.show()

이 코드는 x축의 값을 백만(M) 단위로 표시해줍니다. 차트에 나타난 1e6은 1,000,000을 의미하므로, 이를 1.0M 같은 형태로 보여주게 됩니다. 해당 예제를 참고하여 원하시는 대로 차트를 조정해 보시기 바랍니다.