• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    해결됨

seaborn으로 그린 그래프의 x축 소수점 없애는 법

21.03.10 15:31 작성 조회수 2.77k

2

안녕하세요?

sns으로 boxplot 그래프를 그려봤습니다. 그런데 x축의 눈금이 정수가 아닌 실수로 표현됩니다.(예를 들면, 35가 35.0으로 표현) 소수점 없이 정수로 표현하는 방법이 있을까요?

답변 부탁드리겠습니다.

감사합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. 

seaborn  에서 수치데이터를 위한 그래프를 그릴때는 추정값을 표시를 해요.

그래서 정수가 아닌 실수로 표기가 되는데요.

lineplot 같은 경우에는 pointplot으로 그리면 정수가 실수로 표현되지 않아요.

그래서 정수가 실수로 표현되는 것은 그 그래프가 수치 데이터를 표현하기 위해서인데요.

연도나 월 같은 경우에도 숫자이기 때문에 lineplot으로 그래프를 그리면 이런 현상이 나타나요.

그런데 pointplot으로 그리면 정수로 표시가 되는데 pointplot을 범주형 데이터를 위한 그래프이기 때문이에요.

질문은 boxplot으로 주셨는데 boxplot 도 수치데이터를 표현하기 위해 사용해요.

그래서 실수로 표기가 되는데요.

seaborn은 matplotlib을 기반으로 만들어졌어요.

그래서 표현되는 수치를 변경하기 위해서는 matplotlib을 함께 사용해 주셔야 해요.

boxplot은 아니지만 아래의 예제를 참고해 보세요.

# 연도에 소숫점이 생기지 않게 표시하고자 한다면 ax.xaxis.set_major_locator를 사용해서 integer로 설정합니다.

from matplotlib.ticker import MaxNLocator

ax = plt.figure().gca()

df_last.groupby(["연도"])["평당분양가격"].mean().plot()

ax.xaxis.set_major_locator(MaxNLocator(integer=True))

asdfs1님의 프로필

asdfs1

질문자

2021.03.11

안내해 주신 방법으로 위의 예제는 연도가 정수 처리가 되네요. 하지만 처음에 문의드렸던 boxplot에서는 여전히 실수로 표기가 됩니다,,,

아래처럼 2가지로 시도해 봤는데요, 혹시 제가 잘못 이해한 부분이 있을까요?

<시도 1>

from matplotlib.ticker import MaxNLocator

ax = plt.figure().gca()

sns.boxplot(data=df, x='과실율[%]', y='통원일수')

ax.xaxis.set_major_locator(MaxNLocator(integer=True))

<시도2>

from matplotlib.ticker import MaxNLocator

ax = sns.boxplot(data=df, x='과실율[%]', y='통원일수')

ax.xaxis.set_major_locator(MaxNLocator(integer=True))

안녕하세요.

과실율과 통원일수가 int인지 float인지 데이터 프레임의 일부와

데이터프레임의 info 정보를 스크린샷과 함께 올려주시면 답변에 도움이 될것 같아요.

asdfs1님의 프로필

asdfs1

질문자

2021.03.11

데이터 타입이 float이라서 x축에 실수로 표시가 되었었네요. 데이터 타입을 int로 바꾸니까 문제현상이 사라졌습니다.

답변 감사합니다. 많은 도움이 되었습니다~