[Pyhon]heatmap 그리기,텍스트 넣기

반응형
    반응형

    matplotlib를 이용한 heat map 그리는 방법입니다. 

    데이터는 임의로 10x10 행렬로 만들어서 데이터프레임으로 만들었습니다.

     

    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    
    data = np.random.randn(10,10)
    columns = ['X' + str(x).zfill(1) for x in range(10)]
    df = pd.DataFrame(data,columns=columns)
    df.index = ['Y' + str(x).zfill(1) for x in range(10)]

    heatmap 그리기

    maplotlib에서 heatmap 그리는 방법은 2가지가 있습니다.
    imshow와 pcolor를 이용한 방법입니다.
    먼저 imshow를 이용해 heatmap을 그립니다.

    plt.imshow(map_df,cmap='hot',interpolation='none')
    plt.colorbar()
    plt.xticks(range(len(df.columns)),df.columns)
    plt.yticks(range(len(df)), df.index)
    plt.show()

    pcolor를 이용한 방법입니다.

    plt.pcolor(df.values,cmap='hot')
    plt.colorbar()
    plt.xticks(range(len(df.columns)),df.columns)
    plt.yticks(range(len(df)), df.index)
    plt.show()

    pcolor가 좀 더 격자모양으로 넓게 나왔고 y축의 값이 뒤집어져 있습니다.

    텍스트 넣기

    그래프 안에 텍스트를 넣겠습니다.
    plt.text를 이용해 격자에 맞게 값을 넣을 수 있습니다.
    먼저 imshow에서의 텍스트 넣는 방법입니다.

    plt.imshow(df,cmap='hot',interpolation='none')
    
    for i in range(df.shape[1]):
        for j in range(df.shape[0]):
            plt.text(i,j,round(df.iloc[j,i],1),ha='center',va='center')
    
    plt.xticks(range(len(df.columns)),df.columns) 
    plt.yticks(range(len(df.index)), df.index) 
    
    plt.colorbar()
    plt.show()

    pcolor에서의 텍스트 넣는 방법입니다.
    pcolor는 i,j 위치가 약간 달라서 0.5씩 더해주어야 합니다.

    plt.pcolor(df.values,cmap='hot')
    
    for i in range(df.shape[1]):
        for j in range(df.shape[0]):
            plt.text(i+0.5,j+0.5,round(df.iloc[j,i],1),ha='center',va='center')
    
    plt.xticks(range(len(df.columns)),df.columns) 
    plt.yticks(range(len(df.index)), df.index) 
    
    plt.colorbar()
    plt.show()

    마치며

    색상 바꾸는 방법은 아래 포스팅을 참고하시기 바랍니다.

     

    관련 포스팅
    ndarray 랜덤한값 생성

    [Python/그래프 그리기] - [python] heatmap 색상바꾸기(컬러맵 만들기)

    댓글

    Designed by JB FACTORY

    ....