Сортированные гистограммы с пандами / matplotlib или seaborn
у меня есть набор данных из 5000 продуктов с 50 характеристики. Один из столбцов - "цвета", и в столбце более 100 цветов. Я пытаюсь построить гистограмму, чтобы показать только верхние 10 цветов и сколько продуктов есть в каждом цвете.
top_colors = df.colors.value_counts()
top_colors[:10].plot(kind='barh')
plt.xlabel('No. of Products');
Использование Seaborn:
sns.factorplot("colors", data=df , palette="PuBu_d");
1) Есть ли лучший способ сделать это?
2) Как я могу повторить это с Seaborn?
3) Как сделать я строю так, что самый высокий граф находится наверху (i.e черный в самом верху гистограммы)
2 ответов
простой трюк может быть инвертировать ось y вашего сюжета, а не futzing с данными:
s = pd.Series(np.random.choice(list(string.uppercase), 1000))
counts = s.value_counts()
ax = counts.iloc[:10].plot(kind="barh")
ax.invert_yaxis()
Сиборн barplot
в настоящее время не поддерживает горизонтально ориентированные бары, но если вы хотите контролировать порядок появления баров, вы можете передать список значений в x_order
парам. Но я думаю, что здесь проще использовать методы заговора панд.
Если вы хотите использовать панд, то вы можете сначала сортировать:
top_colors[:10].sort(ascending=0).plot(kind='barh')
Seaborn уже стили ваших панд участков, но вы также можете использовать:
sns.barplot(top_colors.index, top_colors.values)