从数据透视器看海生热图中的数据顺序[英] Data order in seaborn heatmap from pivot

本文是小编为大家收集整理的关于从数据透视器看海生热图中的数据顺序的处理方法,想解了从数据透视器看海生热图中的数据顺序的问题怎么解决?从数据透视器看海生热图中的数据顺序问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

所以我有一个使用 seaborn 创建的热图

revels = rd.pivot("Flavour", "Packet number", "Contents")

ax = sns.heatmap(revels, annot=True, fmt="d", linewidths=0.4, cmap="YlOrRd")

plt.show()

产生在此处输入图片描述

尽管咨询了 seaborn 的帮助文件 (http://seaborn.pydata.org/generated/seaborn.heatmap.html)

我想做的就是以不同的方式订购口味.尽管在文本文件中输入的顺序为橙色、太妃糖、巧克力、麦芽、葡萄干、咖啡,但在绘图时不会以这种方式生成.我尝试编辑 yticklabs,但这只是编辑标签,而不是随其移动数据.

感谢您的帮助

PS 数据如下所示:

Packet number,Flavour,Contents
1,orange,4
2,orange,3
3,orange,2
...
1,toffee,4
2,toffee,3
3,toffee,3
...
etc.

推荐答案

至于第一个问题,您需要对数据进行排序.您的第一行创建了一个数据框,然后您可以使用 sortlevel 方法对其进行排序.

创建数据框:

revels = rd.pivot("Flavour", "Packet number", "Contents")

由于您使用 Flavor 作为索引,所以在添加到热图之前使用 sortlevel 方法:

revels.sort_index(level=0, ascending=True, inplace=True)

这将改变热图中数据的顺序.

这显然提供了升序/降序排序,但如果您需要自定义排序顺序,请尝试以下链接:熊猫数据框中的自定义排序.

自定义排序示例

revels.index = pd.CategoricalIndex(revels.index, categories= ["orange", "toffee", "chocolate", "malteser", "raisin", "coffee"])
revels.sort_index(level=0, inplace=True)

本文地址:https://www.itbaoku.cn/post/1727891.html