복붙노트

[PYTHON] sns.countplot에서 중복되는 x 축 레이블을 방지하는 방법

PYTHON

sns.countplot에서 중복되는 x 축 레이블을 방지하는 방법

줄거리

sns.countplot(x="HostRamSize",data=df)

x 축 레이블을 함께 섞은 다음 그래프가 있는데 어떻게 이것을 피합니까? 이 문제를 해결하기 위해 그래프의 크기를 변경해야합니까?

해결법

  1. ==============================

    1.시리즈 ds 이렇게

    시리즈 ds 이렇게

    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    import numpy as np; np.random.seed(136)
    
    l = "1234567890123"
    categories = [ l[i:i+5]+" - "+l[i+1:i+6] for i in range(6)]
    x = np.random.choice(categories, size=1000, 
                p=np.diff(np.array([0,0.7,2.8,6.5,8.5,9.3,10])/10.))
    ds = pd.Series({"Column" : x})
    

    축 레이블을 더 읽기 쉽게 만들 수있는 몇 가지 옵션이 있습니다.

    plt.figure(figsize=(8,4)) # this creates a figure 8 inch wide, 4 inch high
    sns.countplot(x="Column", data=ds)
    plt.show()
    
    ax = sns.countplot(x="Column", data=ds)
    
    ax.set_xticklabels(ax.get_xticklabels(), rotation=40, ha="right")
    plt.tight_layout()
    plt.show()
    

    ax = sns.countplot(x="Column", data=ds)
    
    ax.set_xticklabels(ax.get_xticklabels(), fontsize=7)
    plt.tight_layout()
    plt.show()
    

    물론 그것들의 어떤 조합도 똑같이 잘 작동 할 것입니다.

    그림 크기와 xlabel fontsize는 rcParams를 사용하여 전체적으로 설정할 수 있습니다.

    plt.rcParams["figure.figsize"] = (8, 4)
    plt.rcParams["xtick.labelsize"] = 7
    

    이 설정은 주피터 노트 위에 놓아 그 안에 생성 된 그림에 적용되도록 유용 할 수 있습니다. 불행히도 눈금 라벨을 회전하는 것은 rcParams를 사용하여 불가능합니다.

    같은 전략이 자연적으로 해보자 바브롯, matplotlib 바 플롯 또는 pandas.bar에도 적용된다는 것은 주목할만한 가치입니다.

  2. ==============================

    2.xticks 레이블이 함께 짜여지지 않도록하려면, 적절한 그림 크기를 설정하고 fig.autofmt_xdate ()를 시도하십시오.

    xticks 레이블이 함께 짜여지지 않도록하려면, 적절한 그림 크기를 설정하고 fig.autofmt_xdate ()를 시도하십시오.

    이 기능은 라벨을 자동으로 정렬하고 회전시킵니다.

  3. from https://stackoverflow.com/questions/42528921/how-to-prevent-overlapping-x-axis-labels-in-sns-countplot by cc-by-sa and MIT license