본문 바로가기
데이터 분석/시각화

[Matplotlib] 눈금 라벨(Tick Label) 폰트 사이즈, 굵기 설정하기

by 부자 꽁냥이 2023. 5. 24.

안녕하세요~ 꽁냥이에요. 이번 포스팅에서는 지난 포스팅에서 다룬 tick_params를 이용한 눈금 라벨 꾸미기에서 다루지 못했던 내용을 소개하려고 합니다.

 

여기서는 간단하게 tick_params를 쓰지 않고 눈금 라벨 폰트 사이즈를 바꾸는 방법과 굵기(예: 볼드) 설정 방법에 대해서 알아보겠습니다.

 

tick_params를 이용한 눈금 및 눈금 라벨 꾸미기(라벨 회전, 크기, 색상 등)에 대한 내용은 아래 포스팅을 참고해 주세요.

 

[Matplotlib] 눈금과 눈금 라벨 꾸미기 (feat. tick_params)

 

[Matplotlib] 눈금과 눈금 라벨 꾸미기 (feat. tick_params)

안녕하세요~ 꽁냥이입니다. 데이터 시각화를 하다 보면 좌표의 눈금과 눈금 라벨을 커스터마이징하고 싶을 때가 있습니다. 예를 들면 x축에 날짜가 들어가서 가로로 쓰면 오버랩이 발생하여 90

zephyrus1111.tistory.com


   눈금 라벨(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()

 


댓글


맨 위로