[ Python ] matplotlib tick 값 수정하기 (dir, help)

2019. 12. 18. 13:30분석 Python/Visualization

728x90

도움이 되셨다면, 광고 한번만 눌러주세요.  블로그 관리에 큰 힘이 됩니다.

파이썬으로 시각화할 때 x 축이나 y축에 숫자가 아닌 다른 값을 넣고 싶을 때가 있다.
R에서는 ggplot이 있어서 엄청 쉽게 할 수 있다 .
파이썬도 seaborn이나 plotly 같은 패키지를 써도 쉽게 할 수 있긴 하겠지만,
필자는 간단하게 해볼 때 matplotlib 라이브러리를  자주 쓰므로 궁금해서 찾아서 해봤다.

아래 그림에서는  tick을 수정할 껀데, font를 크게 하거나 작게 하거나 회전을 주거나
아니면 특정 값이면 색깔을 바꾸는 것을 시도했다.
개인적인 생각으로, 저렇게 특정 부분을 수정하는 것은 seaborn이나 plotly 보다는 matplotlib가 더 편하게 할 것이라고 생각한다.

이것 외에도 아래 코드에 tick라는 부분을 좀 더 파보면 더 다양한 것을 바꿀 수 있다.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

sample = pd.Series(np.random.choice(list("ABCDE") , 100000 , p = [0.4,0.35,0.1,0.1,0.05] ))
ratio = sample.value_counts(normalize=True)


fig, axes = plt.subplots( 1,1, figsize=(10,10))
pos = np.arange(len(ratio.values))
plt.barh( pos , np.squeeze(ratio.values))
naming = ratio.index.tolist()
plt.yticks(pos , naming)
threshold = 0.3
for idx , tick in enumerate( axes.yaxis.get_major_ticks()) :
    tick.label.set_fontsize(25)
    tick.label.set_rotation(25)
    if tick.label.get_text() in ["C" , "D"] :
        tick.label.set_color("green")
    if np.squeeze(ratio.values)[idx] > threshold :
        tick.label.set_color("red")
plt.vlines(x=threshold , ymin =-1 , ymax= len(ratio))
plt.show()

 

help 함수를 사용하면 해당 파라미터 설명이 쭉 나온다 

help(tick)

아니면 dir 함수를 사용해서 tick.label 에서 쓸 수 있는 것을 쭉 보고 원하는 것을 추가로 넣어서 사용할 수 있다.

print(dir(tick.label))

728x90