파이썬의 Seaborn에서 legend의 라벨을 자유롭게 변경

10322 단어 파이썬matplotlib

이런 사람을 위한 기사


  • 파이썬에서 seaborn을 최근에 사용하기 시작하고 boxplot, violinplot 등을하고 싶은 사람
  • violinplot, boxplot에서 스스로 결정한 문자열로 라벨을 설정하고 싶은 사람
  • seaborn이라면 라벨이 자동으로 설정되어 버려 곤란한 사람

  • 해결 방법



    legend의 핸들을 설정하는 이하의 2행으로 간단하게 해결!
    handler, label = ax.get_legend_handles_labels()
    ax.legend(handler, ["label1", "label2"])
    

    타이타닉 데이터를 이용한 플롯 예



    데이터 다운로드



    예로 titanic 데이터를 사용합니다.
    titanic 데이터 세트는 여러 곳에서 설명됩니다. 예를 들면 아래 기사 등.
    참고:「Titanic:타이타닉호 승객자의 생존 상황(연령이나 성별 등의 13항목)의 표 형식 데이터 세트」
    htps //w w. 오 t r t. 이. jp / ai t / archi c0s / 2007/02 / 네 ws016. HTML
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    sns.set("talk")
    
    df = sns.load_dataset('titanic')
    df.head()
    

    출력 결과는 이런 느낌.



    승객 클래스별 연대 분포



    여기에서는 pclass(여객 클래스)마다의 연대 분포를 플롯해 보겠습니다.
    sns.violinplot(data=df, x='pclass', y='age')
    



    그림을 보면 pclass3에서는 연대가 젊은 층이 많은 것을 알 수 있습니다.
    더 깊은 해자,
    「각 클래스의 연대 분포로 생사에 차이가 있었는지」
    보고 싶습니다.
    fig,ax=plt.subplots()
    sns.violinplot(data=df, x='pclass', y='age',hue="alive",split=True, ax=ax)
    ax.legend(loc='upper left',bbox_to_anchor=(1.05,1))
    



    hue를 지정하면 violinplot을 두 가지로 나눌 수 있습니다.
    범례는 쉽게 볼 수 있도록 그림 밖에 있습니다.

    라벨 변경 (본제)



    드디어 본제입니다. 여기서 신경이 쓰이는 것은 범례의 라벨.
    no, yes에서는 나중에 보았을 때 무엇을 모르겠네요.
    이것은 df의 alive 열의 내용 no/yes를 그대로 라벨에 지정하고 있기 때문입니다.

    그래서 label의 핸들을 get해 직접 지정해 줍니다.
    fig,ax=plt.subplots()
    sns.violinplot(data=df, x='pclass', y='age',hue="alive",split=True, ax=ax)
    ax.legend(loc='upper left',bbox_to_anchor=(1.05,1))
    handler, label = ax.get_legend_handles_labels()
    ax.legend(handler, ["dead","alive"],loc='upper left',bbox_to_anchor=(1.05,1))
    



    무사히, 라벨이 dead/alive가 되어 나중에 봐도 생사에 차이가 없는지를 판별할 수 있군요.

    그건 그렇고, 삶의 죽음으로 나누는 것으로 나타났습니다.
  • pclass2,3 때 10대 등의 젊은 연대에서 alive의 비율이 높다
  • pclass3에서는 30대에서는 dead와 alive의 비율이 같은 정도이지만, pclass2에서는 dead의 비율이 높다
  • pclass1은 50대 이상으로 dead의 비율이 현저하게 높아지고 있다.

  • 등 다양한 것을 알 수 있네요.

    swarmplot 예제



    물론 swarmplot에서도 마찬가지입니다.
    fig,ax=plt.subplots()
    sns.swarmplot(data=df, x='pclass', y='age',hue="alive",dodge=True, ax=ax)
    ax.legend(loc='upper left',bbox_to_anchor=(1.05,1))
    handler, label = ax.get_legend_handles_labels()
    ax.legend(handler, ["dead","alive"],loc='upper left',bbox_to_anchor=(1.05,1))
    

    요약


  • seaborn으로 플롯하면 열의 내용이 레이블이됩니다
  • 핸들을 get해 직접 지정하는 것으로 라벨을 자유롭게 편집할 수 있다

  • 참고 기사



    파이썬 : seaborn을 사용하여 시각화를 시도해보십시오 htps : // bg. 아메다마. jp / 엔트리 / 세아보 rn p pt

    좋은 웹페이지 즐겨찾기