>source

원래 데이터 프레임의 값을 변경하지 않고 첫 네 글자 만 표시되도록 긴 레이블을 자르고 싶습니다.

예 :

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sn
np.random.seed(89)
# Toy Dataset
d = pd.DataFrame(np.random.randint(0,3, size=(100, 1)), columns=['var'])
d['var'] = (np.where(d['var'] == 1,'Long loooooong loooooong text',d['var']))
# Plot
f, axes = plt.subplots()
sns.countplot(y='var', data=d, orient='h');

현재 출력:

원하는 출력 :


  • 답변 # 1

    이것은 이미 짧은 형식으로 데이터를 제공함으로써 가장 잘 해결됩니다.

    df2 = d.copy()
    df2["var"] = df2["var"].apply(lambda x: x[:4])
    # Plot
    f, axes = plt.subplots()
    sns.countplot(y='var', data=df2, orient='h');
    
    

  • 답변 # 2

    약간 일반적인 해결책을 제공하겠습니다 : 반복 y- 틱 레이블을 통해 새 레이블 목록을 작성하십시오. 레이블이 4자를 초과하는 경우 최대 4 자까지만 저장할 수 있습니다. 마지막으로이 새로운 라벨 목록을 y- 틱으로 지정

    # Plot
    f, axes = plt.subplots()
    ax = sns.countplot(y='var', data=d, orient='h');
    new_labels = []
    for i in ax.yaxis.get_ticklabels():
        label = i.get_text()
        if len(label) > 4:
            new_labels.append(label[0:4])
        else:    
            new_labels.append(label)
    ax.yaxis.set_ticklabels(new_labels) 
    
    

    또는 다음과 같이 목록 이해를 사용하여 한 줄에 새 레이블을 만들 수 있습니다

    new_labels = [i.get_text()[0:4] if len(i.get_text()) > 4 else i.get_text() 
                  for i in ax.yaxis.get_ticklabels()]
    
    

  • 답변 # 3

    이것을 시도하십시오 :

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    np.random.seed(89)
    # Toy Dataset
    d = pd.DataFrame(np.random.randint(0,3, size=(100, 1)), columns=['var'])
    d['var'] = (np.where(d['var'] == 1,'Long loooooong loooooong text'[:4],d['var']))
    # Plot
    f, axes = plt.subplots()
    sns.countplot(y='var', data=d, orient='h');
    
    

    문자열의 첫 네 글자를 얻으려면 :

    first_four_letters = your_string[:4]
    
    
    

  • 이전 laravel - illuminate \ database \ queryexception - sqlstate [42s02] : 기본 테이블 또는 뷰를 찾을 수 없음 : 1146 'avatrapps'테이블이 존재하지 않습니다 (s
  • 다음 python - Draw가 호출 되더라도 FigureCanvas는 표시되지 않습니다