【发布时间】:2018-03-20 09:04:20
【问题描述】:
这个问题给出了y轴排序的解决方案:Data order in seaborn heatmap from pivot 但是如何对 x 轴和 y 轴执行自定义排序?
没有自定义排序,我们看到的是顺序:
- x轴:手机、电视
- y 轴:苹果、谷歌、三星
代码:
lol = [['apple', 'phone', 10], ['samsung', 'tv', 20], ['apple', 'tv', 5], ['google', 'tv', 8], ['google', 'phone', 9], ['samsung', 'phone', 3]]
df = pd.DataFrame(lol)
df = df.rename(columns={0:'brand', 1:'product', 2:'count'})
df = df.pivot('brand', 'product', 'count')
ax = sns.heatmap(df)
plt.show()
[出]:
如果我需要对 y 轴进行排序以显示顺序 samsung, apple, google,我可以这样做:
lol = [['apple', 'phone', 10], ['samsung', 'tv', 20], ['apple', 'tv', 5], ['google', 'tv', 8], ['google', 'phone', 9], ['samsung', 'phone', 3]]
df = pd.DataFrame(lol)
df = df.rename(columns={0:'brand', 1:'product', 2:'count'})
df = df.pivot('brand', 'product', 'count')
df.index = pd.CategoricalIndex(df.index, categories= ["samsung", "apple", "google"])
df.sortlevel(level=0, inplace=True)
ax = sns.heatmap(df)
plt.show()
[出]:
但是如何对 x 轴和 y 轴执行自定义排序?,例如
-
y轴显示顺序
samsung, apple, google -
x-axis 显示顺序
tv, phone(不只是颠倒顺序)
【问题讨论】:
标签: python pandas pivot seaborn categorical-data