Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas Sns条形图不会对切片值进行排序_Pandas_Sorting_Seaborn_Bar Chart_Slice - Fatal编程技术网

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

Pandas Sns条形图不会对切片值进行排序,pandas,sorting,seaborn,bar-chart,slice,Pandas,Sorting,Seaborn,Bar Chart,Slice,我想使用sns条形图从pd df绘图。一切正常: 关联代码: 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,

我想使用sns条形图从pd df绘图。一切正常:

关联代码:

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')
但正如图1所示,有太多的条,所以我只想要最高的10条,当我切片x和y时:

x=result[:10].index
y=result[:10].values
plot=sns.barplot(x, y)
它按如下顺序打印条形图:


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

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

使用seaborn 0.11.1,您会得到一个警告,因为
x
y
首选通过关键字传递,即
sns.barplot(x=x,y=y)
。警告试图避免与
data=
关键字混淆。除此之外,数字x值将按数字排序

可以通过
order=
关键字来控制顺序。在这种情况下,
sns.barplot(x=x,y=y,order=x)
。要只获得最高的10个,可以传递
sns.barplot(x=x,y=y,order=x[:10])

还要注意,您创建了两次条形图(只是为了更改标题?),这可能会非常混乱。由于
sns.barplot
返回
ax
(绘制绘图的子绘图),通常的方法是
ax=sns.barplot(…)
,然后
ax.set\u title(…)
。(最好使用名称
ax
,以便更容易理解如何在新代码中使用matplotlib和seaborn示例代码。)

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

导入matplotlib.pyplot作为plt
导入seaborn作为sns
作为pd进口熊猫
将numpy作为np导入
打印(sns.\u版本\u)
df=pd.DataFrame({'Code department':np.random.randint(1,511000)})
结果=df.groupby(['Code department']).size().sort_值(升序=False)
x=结果索引
y=结果值
ax=sns.barplot(x,y,order=x[:10])
ax.set(xlabel='Code department',ylabel='Nombre de transactions')
ax.设置标题(“标题”)
plt.show()