Pandas Sns条形图不会对切片值进行排序
我想使用sns条形图从pd df绘图。一切正常: 关联代码: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,
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()