안녕하세요~ 꽁냥이에요. 이번 포스팅에서는 지난 포스팅에서 다룬 tick_params를 이용한 눈금 라벨 꾸미기에서 다루지 못했던 내용을 소개하려고 합니다.
여기서는 간단하게 tick_params를 쓰지 않고 눈금 라벨 폰트 사이즈를 바꾸는 방법과 굵기(예: 볼드) 설정 방법에 대해서 알아보겠습니다.
tick_params를 이용한 눈금 및 눈금 라벨 꾸미기(라벨 회전, 크기, 색상 등)에 대한 내용은 아래 포스팅을 참고해 주세요.
[Matplotlib] 눈금과 눈금 라벨 꾸미기 (feat. tick_params)
눈금 라벨(Tick Label) 폰트 사이즈, 굵기 설정하기
방법은 아주 간단합니다. x축 눈금 라벨은 set_xticklabels, y축 눈금 라벨은 set_yticklabels 메서드를 이용하며 폰트 사이즈는 fontsize, 굵기는 fontweight 인자를 이용하면 됩니다. 이때 fontweight는 숫자값으로 0~1000까지의 값을 가질 수 있고 아래의 문자열을 받을 수 있습니다.
'ultralight', 'light', 'normal', 'regular', 'book',
'medium', 'roman', 'semibold', 'demibold',
'demi', 'bold', 'heavy', 'extra bold', 'black'
이제 코드를 통해서 알아보겠습니다. 아래 코드는 x축 눈금 라벨의 폰트 사이즈를 13으로 하고 폰트 굵기를 0, 200, 400, 600, 800, 1000으로 설정한 산점도를 보여줍니다.
fig, axs = plt.subplots(2, 3, figsize=(15, 10))
fig.set_facecolor('white')
font_weights = np.linspace(0, 1000, 6) ## 폰트 굵기 숫자 리스트
for i in range(6):
col_idx = i%3
row_idx = i//3
ax = axs[row_idx, col_idx]
ax.scatter(x, y)
ax.set_xticks(np.arange(0.5, 5.5, 1))
ax.set_xticklabels(['A', 'B', 'C', 'D', 'E'],
fontsize=13, ## 폰트 사이즈
fontweight=font_weights[i] ## 폰트 굵기
)
ax.set_title(f'Font Weight : {font_weights[i]}')
plt.show()
코드를 실행하면 아래와 같이 숫자에 따른 굵기 변화를 한눈에 파악할 수 있어요.
참고로 위 코드는 아래와 같이 Text 객체에서 set_fontsize, set_fontweight 메서드를 이용해서 바꿀 수도 있습니다.
fig, axs = plt.subplots(2, 3, figsize=(15, 10))
fig.set_facecolor('white')
font_weights = np.linspace(0, 1000, 6)
for i in range(6):
col_idx = i%3
row_idx = i//3
ax = axs[row_idx, col_idx]
ax.scatter(x, y)
ax.set_xticks(np.arange(0.5, 5.5, 1))
ax.set_xticklabels(['A', 'B', 'C', 'D', 'E'])
## Text 객체를 이용하여 폰트 사이즈와 굵기 설정하기
for tl in ax.xaxis.get_majorticklabels():
tl.set_fontsize(13)
tl.set_fontweight(font_weights[i])
ax.set_title(f'Font Weight : {font_weights[i]:.0f}')
plt.show()
이번에는 폰트 굵기를 사전에 정의된 문자열로 지정하여 바꿔보겠습니다. 아래 코드는 사전에 지정된 14가지 폰트 굵기 스타일을 적용한 것입니다. 폰트 사이즈는 10으로 했습니다. 각 스타일에 따라 눈금 라벨의 굵기가 어떻게 변하는지 살펴보세요.
fig, axs = plt.subplots(4, 4, figsize=(16, 16))
fig.set_facecolor('white')
font_str = ['ultralight', 'light', 'normal', 'regular',
'book', 'medium', 'roman', 'semibold', 'demibold',
'demi', 'bold', 'heavy', 'extra bold', 'black']
for i, fs in enumerate(font_str):
col_idx = i%4
row_idx = i//4
ax = axs[row_idx, col_idx]
ax.scatter(x, y)
ax.set_xticks(np.arange(0.5, 5.5, 1))
ax.set_xticklabels(['A', 'B', 'C', 'D', 'E'],
fontsize=10, ## 폰트 사이즈
fontweight=fs ## 폰트 굵기
)
ax.set_title(f'Font Weight : {fs}')
plt.show()
'데이터 분석 > 시각화' 카테고리의 다른 글
[Matplotlib] 메인 눈금(Major Tick), 서브 눈금(Minor Tick) 라벨 따로 지정하기 (feat. MultipleLocator) (2) | 2023.05.18 |
---|---|
[Matplotlib] 눈금과 눈금 라벨 꾸미기 (feat. tick_params) (0) | 2023.04.12 |
[Matplotlib] 시간에 따른 선 그래프(Line Chart)와 박스 플롯(Box Plot, 상자 수염 그림) 같이 그리기 (0) | 2023.02.10 |
[Matplotlib] 분봉 차트(Candle Chart, 캔들 차트) 그리기 (4) | 2023.01.22 |
[Matplotlib] 등고선도(Contour Plot)을 그려보자 (feat. contour, contourf) (0) | 2023.01.10 |
댓글