【问题标题】:Seaborn: How to replace index with text in X-Axis in barplot?Seaborn:如何在条形图中用 X 轴中的文本替换索引?
【发布时间】:2022-01-24 00:28:22
【问题描述】:

我有一个包含 category 列的数据集,其中包含表示类标签的整数值,即 0,1,2.....

我有一个单独的文件,其中包含该类别的文本标签,即针对索引 0,它包含 classA 等等。我想使用 seaborn 和以下代码绘制条形图。

import seaborn as sns
train_df = pd.read_csv("unclean_text.csv", sep='\t')
label_text = pd.read_csv("labels.csv")
is_dup = train_df['category'].value_counts()

plt.figure(figsize=(8,4))
sns.barplot(is_dup.index, is_dup.values, alpha=0.8, color=color[1])
plt.show()

它正确地绘制了每个类频率的条形图。

但我想要 x 轴上的文本标签而不是 label_text 中的索引值,这也是长度为 19 (0-18) 的列向量。怎么做?

【问题讨论】:

    标签: python seaborn


    【解决方案1】:

    sns.barplot() 将返回绘图的轴。您可以使用它来设置刻度标签:

    import matplotlib.pyplot as plt
    import pandas as pd
    import seaborn as sns
    
    color = ['r', 'g', 'b']
    train_df = pd.read_csv("unclean_text.csv", sep='\t')
    label_text = pd.read_csv("labels.csv")
    is_dup = train_df['category'].value_counts()
    
    plt.figure(figsize=(8,4))
    ax = sns.barplot(is_dup.index, is_dup.values, alpha=0.8, color=color[1])
    ax.set_xlabel('Category')
    ax.set_ylabel('Number of Occurrences')
    ax.set_xticklabels(label_text['labels'], rotation='vertical', fontsize=10)
    plt.show()
    

    这假设 labels.csv 类似于:

    labels
    cat0
    cat1
    cat2
    cat3
    cat4
    cat5
    cat6
    cat7
    cat8
    
    etc..
    

    给你一个输出:

    【讨论】:

    • 这是一个答案,但不是正确答案。
    猜你喜欢
    • 2020-11-20
    • 2017-03-18
    • 1970-01-01
    • 2021-05-27
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    相关资源
    最近更新 更多