[matplotlib]pyplot.text(글자 쓰기)

반응형
    반응형

    이번 포스팅에서는 matplotlib 로 그린 그래프 안에 글씨를 넣는 방법을 설명할까 합니다.

    아래와 같은 그래프를 그렸습니다. 보시다시피 주기함수입니다. 

    저는 이 주기함수의 최대값과 최소값에다 각각 max,min 이라 표시를 하고 싶습니다.

     

     

     

    이럴 때 text 메쏘드를 씁니다. 

    파라미터를 보면 x, y, s, fontdict , withdash , 기타등등으로 되어 있습니다.

     

     

     

     

    그래프는 좌표평면에 그리게 됩니다.

    좌표평면에서 (x,y)로 좌표표시를 하는데 거기에서의 x, y 가 text 파라미터의 x,y 가 됩니다. 

    s 는 내가 넣을 문구를 넣으시면 되고 

    글자 크기와 색깔, 글자위치만 잘 지정해도 나쁘지 않으니 그 부분에 대해서만 설명하겠습니다. 

     

     

    max, min 표시하기

    max와 min 을 그래프에 표시하기 위해서는 좌표를 알아야 합니다. 

    좌표를 알기 위해 데이터에서 max랑 매칭되는 인덱스를 찾아보겠습니다.

     

    season

     

     

     

    season이라는 데이터로 위의 그림을 그렸습니다. 

    이 데이터를 보면 series로 이루어진 걸을 알 수 있습니다. 

    자신의 데이터의 타입을 잘 모르면 type(데이터)를 해서 확인해 볼 수도 있습니다.

     

    type(season)

     

     

    여기서 min,max를 찾고 인덱스도 찾아보겠습니다. min,max는 간단합니다.

    max(season), min(season)을 입력하면 나옵니다.

     

    print(max(season),min(season))

     

     

     

    이제 인덱스를 찾아봅시다. max만 보여드리겠습니다. 

    series니깐 다음과 같이 구할 수 있습니다.

     

    index_max = season[season==max(season)].index
    index_min = season[season==min(season)].index
    print(index_max)

     

     

     

    주기함수라서 여러개의 인덱스가 나왔습니다.

    인덱스의 맨 처음것을 가지고 min, max의 좌표를 구성해서 그래프에 표시합니다. 

     

    plt.plot(season.index,season.values)
    plt.text(season.index[0],max(season),'max')
    plt.text(index_min[0],min(season),'min')

     

     

     

    max와 min 이 그래프에 써졌습니다!

     

    fontsize, color, va, ha

    이제 글자위치와 색깔 크기 등을 바꿔봅시다.

    비교를 위해 max만 바꿔보겠습니다.

    그에 앞서 color와 fontsize는 쉽게 이해가 될테니

    va 와 ha에 대해 설명하겠습니다.

    va 는 verticalalignment 의 약자로 y축에서의 위치를 말합니다.

    [ 'center' | 'top' | 'bottom' | 'baseline' ] 으로 되어있고 이중에 하나를 선택해서 씁니다. 

    ha 는 horizontalalignment 의 약자로 x축에서의 위치를 말합니다.

    [ 'center' | 'right' | 'left' ] 으로 되어있습니다.

     

     

    이제 max를 조금 변경해보겠습니다. 

     

    plt.plot(season.index,season.values)
    plt.text(season.index[0],max(season),'max',fontsize=15,color='g',va='baseline',ha='left')
    plt.text(index_min[0],min(season),'min')

     

     

     

     

    글자크기를 좀 키우고 va는 y값 선상에 위치하고 ha는 왼쪽으로 놓았습니다.

    이런식으로 하면 되겠습니다.

     

     

     

    series에 대해 더 알고 싶다면 이전 포스팅을 참고해주세요

    [Python/Pandas] - Pandas Series 특징

    댓글

    Designed by JB FACTORY

    ....