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

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

by 부자 꽁냥이 2023. 4. 12.

안녕하세요~ 꽁냥이입니다. 데이터 시각화를 하다 보면 좌표의 눈금과 눈금 라벨을 커스터마이징하고 싶을 때가 있습니다. 예를 들면 x축에 날짜가 들어가서 가로로 쓰면 오버랩이 발생하여 90도 회전한다거나 눈금 라벨을 크게 하는 것처럼 말이죠. Matplotlib에서 tick_params를 이용하면 눈금과 눈금 라벨을 변경할 수 있는데요. 이번 포스팅에서는 tick_params의 사용법을 알아보겠습니다.


   tick_params 사용법

tick_params는 눈금과 눈금 라벨을 꾸미는 기능을 제공하는데요. 여기서는 꽁냥이가 많이 사용하는 기능 위주로 소개하겠습니다.


1) 눈금 라벨 회전 : rotation or labelrotation

tick_params에서 rotation 또는 labelrotation 인자를 사용하면 눈금 라벨을 회전시킬 수 있습니다. tick_params는 axis 인자에 어떤 축을 꾸밀 것인지를 지정해줘야합니다. axis='x'는 x축, axis='y'는 y축에 눈금 및 눈금 라벨 변경사항을 적용하겠다는 뜻이며 axis='both'인 경우 x, y축 모두 적용됩니다.

 

아래 코드는 눈금 라벨을 x축은 90도, y축은 45도 회전시킵니다.

 

import matplotlib.pyplot as plt

x = ['2023-03-01', '2023-03-02', '2023-03-03', '2023-03-04']
y = [100, 200, 150, 300]

fig = plt.figure(figsize=(5,5))
fig.set_facecolor('white')
ax = fig.add_subplot()
ax.scatter(range(len(x)), y)
ax.set_xticks(range(len(x)))
ax.set_xticklabels(x)

ax.tick_params(axis='x', rotation=90) ## x축 눈금 90 회전 또는 labelrotation=90
ax.tick_params(axis='y', rotation=45) ## y축 눈금 90 회전 또는 labelrotation=45
plt.show()

 


2) 눈금 라벨 크기 : labelsize

labelsize 인자를 이용하면 눈금 라벨 크기를 조절할 수 있습니다. 아래 코드는 labelsize를 5, 7, 10 그리고 15로 설정했을 때 x, y축 눈금 라벨 크기의 변화를 살펴본 것입니다.

 

x = [1, 3, 2, 5]
y = [6, 1, 10, 3]

fig, axs = plt.subplots(1, 4, figsize=(16,4))
fig.set_facecolor('white')

labelsize_list = [5, 7, 10, 15]
for i, l in enumerate(labelsize_list):
    ax = axs[i]
    ax.scatter(x, y)
    ax.set_title(f'Label Size : {l}')
    ax.tick_params(axis='both', labelsize=l) ## x, y 축에 모두 적용
plt.show()

 


3) 눈금 라벨 색상 : labelcolor

labelcolor를 사용하면 눈금 라벨 색상을 적용할 수 있습니다. 아래 코드는 y축에 대해서 눈금 라벨 색상을 빨강, 검정, 파랑, 초록으로 지정했을 때 결과를 보여줍니다.

 

x = [1, 3, 2, 5]
y = [6, 1, 10, 3]

fig, axs = plt.subplots(1, 4, figsize=(16,4))
fig.set_facecolor('white')

labelcolor_list = ['red', 'black', 'blue', 'green']
for i, lc in enumerate(labelcolor_list):
    ax = axs[i]
    ax.scatter(x, y)
    ax.set_title(f'Label Color : {lc}')
    ax.tick_params(axis='y', labelcolor=lc) ## x, y 축에 모두 적용
plt.show()

 


4) 눈금과 눈금 라벨 색상 동시 적용 : colors

앞에서는 눈금 라벨 색상만 변경했고 colors를 이용하면 눈금의 색상도 바꿀 수 있습니다.

 

x = [1, 3, 2, 5]
y = [6, 1, 10, 3]

fig, axs = plt.subplots(1, 4, figsize=(16,4))
fig.set_facecolor('white')

color_list = ['purple', 'gray', 'red', 'green']
for i, c in enumerate(color_list):
    ax = axs[i]
    ax.scatter(x, y)
    ax.set_title(f'Color : {c}')
    ax.tick_params(axis='y', colors=c) ## x, y 축에 모두 적용
plt.show()

 


5) 눈금 색상, 길이, 두께 : color, length, width

눈금의 색상은 color, 길이는 length 그리고 두께는 width를 이용하여 변경할 수 있어요. 이때 눈금과 눈금 라벨을 동시에 바꿔주는 colors와 눈금 색상만 바꿔주는 color를 혼동하시면 안돼요. 아래 코드는 x축 눈금의 색상과 길이 그리고 두께를 여러 가지 조합에 따라서 적용한 것입니다.

 

x = [1, 3, 2, 5]
y = [6, 1, 10, 3]

fig, axs = plt.subplots(1, 4, figsize=(16,4))
fig.set_facecolor('white')

tick_color_list = ['purple', 'gray', 'r', 'green']
tick_length_list = [2, 4, 6, 8]
tick_width_list = [7, 5, 3, 1]
for i, tl in enumerate(tick_length_list):
    ax = axs[i]
    ax.scatter(x, y)
    ax.set_title(f'Tick C, L, W : {tick_color_list[i]}, {tl}, {tick_width_list[i]}')
    ax.tick_params(axis='x', color=tick_color_list[i], 
                   length=tl, width=tick_width_list[i]) ## x, y 축에 모두 적용
plt.show()

 


6) 눈금과 눈금 라벨 사이 간격 넓히기 : pad

pad를 이용하면 눈금과 눈금 라벨 사이 공간을 조절할 수 있어요. 아래 코드는 x축 눈금과 눈금 라벨 사이 간격을 여러가지 값을 적용하여 확인해 본 것입니다.

 

x = [1, 3, 2, 5]
y = [6, 1, 10, 3]

fig, axs = plt.subplots(1, 4, figsize=(16,4))
fig.set_facecolor('white')

pad_list = [1, 4, 7, 10]
for i, p in enumerate(pad_list):
    ax = axs[i]
    ax.scatter(x, y)
    ax.set_title(f'Pad : {p}')
    ax.tick_params(axis='x', pad=p) ## x, y 축에 모두 적용
plt.show()

 


이번 포스팅에서는 tick_params를 통하여 눈금과 눈금 라벨을 꾸미는 방법에 대해서 알아보았습니다. 이게 은근히 많이 쓰이면서도 자주 까먹는 내용이라 꽁냥이가 나중에 찾아보기 위해 정리했어요. 하지만 보시는 분들에게도 도움이 될 거예요. 오늘도 행복한 하루 보내시길 바라며 다음에 더 좋은 주제로 찾아뵙겠습니다~


댓글


맨 위로