240527 Today I Learn
ํ๊ธ ๊นจ์งํ์ ํด๊ฒฐํ๊ธฐ
sns.lineplot(data=flights, x = 'year', y = 'passengers')
plt.title('์ฐ๋๋ณ ์น๊ฐ์')
plt.title์ ์์ ํ๊ธ๋ก ๋ ํ ์คํธ๋ฅผ ๋ฃ์ผ๋ฉด ์์ ๊ฐ์ด ํ๊ธ ๊นจ์ง ํ์์ด ๋ฐ์ํ๋ค. ์ด ๋ฌธ์ ๋ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ์ค์ธ ์์คํ ๊ธ๊ผด์ด ํ๊ธ์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ํ๊ธ ํฐํธ๋ฅผ ๋ณ๋๋ก ์ง์ ํด์ค์ผํ๋ค.
์ ์ฉ ๊ฐ๋ฅํ ํ๊ธ ํฐํธ ์ฐพ๊ธฐ ๋ฐ ์ ์ฉํ๊ธฐ
๋งฅ์์๋ `/Users/user_name/Library/Fonts` ํด๋์ ํฐํธ ํ์ผ์ด ์ ์ฅ๋์ด์๋ค. ์๋๋ฉด '์์ฒด๊ด๋ฆฌ์'์๋ค์ด๊ฐ์ ๋ง์์ ๋๋ ํ๊ธ ํฐํธ๋ฅผ ์ ํํ ๋ค 'Finder์์ ๋ณด๊ธฐ'๋ฅผ ์ ํํด๋๋๋ค. ๋ณดํต ttf ํ์ผ์ ์ง์ํ๋ค๊ณ ํ๋๋ฐ, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ๊ฒ๊ฐ์์ 'Apple~'๋ก ๋์ด์๋ ํฐํธ๋ฅผ ์ ํํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
# ํ๊ธ ํฐํธ ์ง์ ํ๊ธฐ
plt.rcParams['font.family'] ='AppleGothic'
# plot
sns.lineplot(data=flight, x = 'year', y = 'passengers', color='green')
plt.title('์ฐ๋๋ณ ์น๊ฐ์')
๊ทธ๋ํ ๋๊ธ ์กฐ์ ํ๊ธฐ
xticks/ yticks
# car_crashes ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
car_crashes = sns.load_dataset('car_crashes')
# ๊ทธ๋ํ ๊ทธ๋ฆฌ๊ธฐ
plt.figure(figsize=(10,7))
sns.barplot(data=car_crashes, x='abbrev', y='total', alpha=0.8)
์ฌ์ฉํ ๋ฐ์ดํฐ๋ seaborn ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ car_crashes ๋ฐ์ดํฐ๋ก, car_crashes ๋ฐ์ดํฐ์ abbrev์ปฌ๋ผ์ ์ด 51๊ฐ์ ์ ๋ํฌ๊ฐ์ด ์๋ค. ๋๋ฌธ์ ์ด๋ ๊ฒ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ฉด x์ถ์ ๊ธธ์ด์ ๋นํด ์ปฌ๋ผ์ด ๋ง๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ์ปฌ๋ผ๋ช ์ด ๊ฒน์ณ ์ ๋ณด์ด์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ (1) ์ปฌ๋ผ์ ์๋ unique ๊ฐ์ ์ข ๋ฅ๊ฐ ๋ง์ ๋, (2) x์ถ์ ๊ฐ๊ฒฉ์ ๋นํด ๋ ์ด๋ธ/x์ถ ๊ฐ์ ๊ธธ์ด๊ฐ ๊ธธ๋ ๋ฐ์ํ๋๋ฐ, ์ด๋ฐ ๊ฒฝ์ฐ plt.xticks๋ฅผ ํ์ฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
plt.figure(figsize=(10,7))
sns.barplot(data=car_crashes, x='abbrev', y='total', alpha=0.8)
# xticks๋ฅผ ์ฌ์ฉํด rotation ์ ์ฉ
plt.xticks(rotation=45)
plt๋ก pyplot์ ๋ถ๋ฌ์์ฃผ๊ณ , ticks๋ฅผ ํธ์ถํด rotation๊ฐ์ ์ง์ ํ๋ฉด ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ ์ด๋ธ์ ๊ฐ๋๊ฐ ๋์๊ฐ๋ค. ๋ณดํต 45๋ ๊ฐ๋๋ก ๋๊ณ , figsize๋ฅผ ์กฐ์ ํด์ฃผ๋ฉด ์์ ๊ทธ๋ํ๋ฅผ ์์ฑํ ์ ์๋ค. yticks๋ฅผ ์ฌ์ฉํ๋ฉด y๋ ์ด๋ธ์ ๋ ์ด๋ธ ๊ฐ๋์ญ์ ์กฐ์ ํ ์ ์๋ค.
๋๊ธ ์์ ๋ฐ๊พธ๊ธฐ
# dataset ๋ถ๋ฌ์ค๊ธฐ
healthexp = sns.load_dataset('healthexp')
# plot ๊ทธ๋ฆฌ๊ธฐ
sns.lineplot(data=healthexp, x='Spending_USD', y = 'Life_Expectancy',hue='Country', palette='husl')
healthexp๋ฅผ ์ด์ฉํด spending_usd๊ณผ life_expectancy๋ฅผ ๊ตญ๊ฐ๋ณ๋ก ๋น๊ตํ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๋ฉด ์์ ๊ฐ๋ค. ์๊ฐํ ์๋ฃ๋ฅผ ํ๋์ ๋ค์ด์ค๊ฒ ๋ง๋ค๊ธฐ ์ํด์๋ ๋ณดํต ์ซ์์ ๊ฒฝ์ฐ ์ฒ๋จ์ ๊ตฌ๋ถ์๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋๋๋ฐ, ๊ฐ์ด ๋๋ฌด ์ปค์ง๋ฉด 10e-6 ๋ฑ์ผ๋ก ๋จ์๊ฐ ์๋์ผ๋ก ๋ฐ๋์ด์ ํํ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
# x์ถ์ ์ ๋ณด๋ฅผ current_values๋ก ๋ถ๋ฌ์ค๊ธฐ
current_values = plt.gca().get_xticks()
# ๋๊ธ ์ด๋ฆ ์ค์ ํ๊ธฐ
plt.gca().set_xticklabels(['{:,.0f}'.format(x) for x in current_values])
- `plt.gca().get_xticks()`๋ฅผ ํ์ฉํด x์ถ์ ๋๊ธ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์จ๋ค.
- `plt.gca().set_xticklabels()`๋ฅผ ํ์ฉํด x์ถ์ ๋๊ธ ์ ๋ณด์ format์ ์ฒ๋จ์์ฝค๋ง(,)๋ฅผ ์ ์ฉํ๋ค.
# plot ๊ทธ๋ฆฌ๊ธฐ
plt.figure(figsize=(16,9))
sns.lineplot(data=healthexp, x='Spending_USD', y = 'Life_Expectancy',hue='Country', palette='husl')
# x์ถ์ ์ ๋ณด๋ฅผ current_values๋ก ๋ถ๋ฌ์ค๊ธฐ
current_values = plt.gca().get_xticks()
current_values
# format์ ๋ง๊ฒ ๋๊ธ ๋ณ๊ฒฝํ๊ธฐ
plt.gca().set_xticklabels(['{:,.0f}'.format(x) for x in current_values])
x์ถ์ spending_USD ๊ฐ๋ค์ด 2,000, 4,000๊ณผ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. y์ถ์ ์ด ์ถ ์ธํ ์ ์ ์ฉํ๊ณ ์ถ๋ค๋ฉด xticks ๋์ yticks๋ฅผ ์ ์ฉํด์ฃผ๋ฉด ๊ฐ๋จํ๊ฒ ํด๊ฒฐ๋๋ค.