python - 来自枢轴的 seaborn 热图中的数据顺序

标签 python pandas matplotlib heatmap seaborn

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

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

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

plt.show()

产生enter image description here

但是有两件事我想做,尽管查阅了 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)

这将更改数据在热图中的顺序。

这显然提供了升序/降序排序,但如果您需要自定义排序顺序,请尝试此链接: Custom sorting in pandas dataframe .

自定义排序示例

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

关于python - 来自枢轴的 seaborn 热图中的数据顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43694368/

相关文章:

python - 如何从Excel获取字典的多个键和单个值

python - 将 pandas 数据框转换为元组字典

python - Matplotlib 绘制公平模具的直方图

python - 五彩线与字符串 linecollection

支持 JS 的 Python 浏览器模拟器

python - Sklearn SVM 给出错误的决策边界

python - 如何通过不相似性而不是相似性进行聚类?使用反欧几里德距离可以接受吗?

python - 如何在 python 中分离字段和路径 gps 坐标?

python - 尝试获取多个 Excel 电子表格,提取特定数据,将它们全部添加到一个数据框中并将其保存为 csv 文件

python - 将 df.groupby...max() 结果输入新列。 Pandas