Sns 条形图不对切片值进行排序

Sns barplot does not sort sliced values

提问人: 提问时间:5/27/2021 最后编辑:Henry Ecker 更新时间:11/12/2023 访问量:376

问:

我想使用 sns barplot 从 pd df 绘图。一切正常:PLOT 1

相关代码:

result = df.groupby(['Code departement']).size().sort_values(ascending=False)
x=result.index
y=result.values
plot=sns.barplot(x, y)
plot.set(xlabel='Code departement', ylabel='Nombre de transactions')
sns.barplot(x, y, data=df).set_title('title')

但是正如您在 PLOT 1 中看到的那样,条形太多了,所以我只想要最高的 10 条,当我切片 x 和 y 时:

x=result[:10].index
y=result[:10].values
plot=sns.barplot(x, y)

它像这样打印无序的条形:PLOT 2

我通过打印 x 和 y(切片)进行了检查,它们是正确的顺序,Idk 我错过了什么,谢谢你的帮助

熊猫 排序 Seaborn 条形图 切片

评论


答:

2赞 JohanC 5/27/2021 #1

您没有说明您正在使用的版本,但它可能不是最新版本。Seaborn 和 matplotlib 在每个新版本中都得到了相当多的改进。

在 seaborn 0.11.1 中,您会收到警告,因为 并且最好通过关键字传递,即 .该警告试图避免与关键字混淆。除此之外,数字 x 值将按数字排序。xysns.barplot(x=x, y=y)data=

可以通过关键字控制订单。在本例中,.只有 10 个最高,你可以通过 .order=sns.barplot(x=x, y=y, order=x)sns.barplot(x=x, y=y, order=x[:10])

另请注意,您正在创建两次条形图(只是为了更改标题?),这可能会非常令人困惑。As 返回 (已绘制该图的子图),通常的方法是 和 然后 。(最好使用这个名称,以便更容易理解如何在新代码中使用 matplotlib 和 seaborn 示例代码。sns.barplotaxax = sns.barplot(...)ax.set_title(...)ax

以下示例代码已使用 seaborn 0.11.1 进行了测试:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

print(sns.__version__)
df = pd.DataFrame({'Code departement': np.random.randint(1, 51, 1000)})
result = df.groupby(['Code departement']).size().sort_values(ascending=False)
x = result.index
y = result.values
ax = sns.barplot(x, y, order=x[:10])
ax.set(xlabel='Code departement', ylabel='Nombre de transactions')
ax.set_title('title')
plt.show()

barplot, only 10 highest

0赞 George Kudryashov 11/12/2023 #2
for column in df.columns:
    if column != 'Dataset': 
        plt.figure(figsize=(8, 4))
        sns.barplot(x=df[column].value_counts().index, y=df[column].value_counts())
        plt.title(f'Distribution of {column}')
        plt.xlabel(column)
        plt.ylabel('Count')
        plt.xticks(rotation=90)
        plt.show()

评论

0赞 Community 11/14/2023
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。