带pandas/matplotlib或seaborn的排序条形图

2024-05-14 03:26:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有5000种产品的数据集,有50种功能。其中一列是“颜色”,列中有100多种颜色。我试图绘制一个条形图,只显示前10种颜色以及每种颜色有多少种产品。

top_colors = df.colors.value_counts()
top_colors[:10].plot(kind='barh')
plt.xlabel('No. of Products');

Pandas Plot

使用Seaborn:

sns.factorplot("colors", data=df , palette="PuBu_d");

Seaborn

1)有更好的方法吗?

2)我怎样才能把这个复制到Seaborn身上?

3)如何绘制使最高计数位于顶部(即条形图顶部为黑色)


Tags: 数据功能dfplot产品value颜色top
2条回答

如果要使用熊猫,则可以首先排序:

top_colors[:10].sort(ascending=0).plot(kind='barh')

Seaborn已经为您的熊猫地块设计了样式,但您也可以使用:

sns.barplot(top_colors.index, top_colors.values)

一个简单的技巧可能是反转绘图的y轴,而不是进一步使用数据:

s = pd.Series(np.random.choice(list(string.uppercase), 1000))
counts = s.value_counts()
ax = counts.iloc[:10].plot(kind="barh")
ax.invert_yaxis()

enter image description here

Seabornbarplot当前不支持水平方向的条,但是如果您想控制条出现的顺序,可以将值列表传递给x_order参数。不过,我觉得在这里使用熊猫的绘图方法更容易。

相关问题 更多 >