Resolved
Written on
·
3.2K
2
안녕하세요?
sns으로 boxplot 그래프를 그려봤습니다. 그런데 x축의 눈금이 정수가 아닌 실수로 표현됩니다.(예를 들면, 35가 35.0으로 표현) 소수점 없이 정수로 표현하는 방법이 있을까요?
답변 부탁드리겠습니다.
감사합니다.
Answer 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))
안내해 주신 방법으로 위의 예제는 연도가 정수 처리가 되네요. 하지만 처음에 문의드렸던 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))