首页 > 解决方案 > Seaborn 热图 xticklabels 不适用于日期

问题描述

也许这是一个反复出现的问题。尽管我在网站上查询了旧问题,但我无法完全解决我的问题。一些旧论坛主题对我帮助很大:

在 seaborn 热图上显示日期

带有日期时间轴的 Seaborn 热图

热图中的日期轴 seaborn

热图中的日期轴 seaborn

但经过多次尝试,我仍然无法弄清楚。

我的问题是这样的:

我有一个这样的数据框(但原始数据框要广泛得多,是从 2004 年到 2018 年的日期索引,间隔为一小时)。

        Estreito    Furnas  Manso   Itumbiara   Curuai
2004-01-19 15:00:00 NaN NaN 3.73    NaN NaN
2004-01-19 16:00:00 NaN NaN 5.10    NaN NaN
2004-01-19 17:00:00 NaN NaN 5.10    NaN NaN
2004-01-19 18:00:00 NaN NaN NaN     NaN NaN
2004-01-19 19:00:00 NaN NaN 4.31    NaN NaN
2004-01-19 20:00:00 NaN NaN 4.90    NaN NaN
2004-01-19 21:00:00 NaN NaN 5.88    NaN NaN
2004-01-19 22:00:00 NaN NaN 7.06    NaN NaN
2004-01-19 23:00:00 NaN NaN 4.71    NaN NaN
2004-01-20 00:00:00 NaN NaN NaN     NaN NaN
2004-01-20 01:00:00 NaN NaN 7.25    NaN NaN
2004-01-20 02:00:00 NaN NaN 5.10    NaN NaN
2004-01-20 03:00:00 NaN NaN 2.55    NaN NaN
2004-01-20 04:00:00 NaN NaN 0.39    NaN NaN
2004-01-20 05:00:00 NaN NaN 0.20    NaN NaN

我想在图表中显示丢失的数据,所以我使用的是 seaborn 模块的热图。

按照文档和旧论坛主题,我得到以下脚本。

import matplotlib.pyplot as plt
import seaborn as sns

df_transposed = df.transpose()

plt.subplots(1,1,figsize=(12,6))

ax = sns.heatmap(df_transposed.isnull(), cbar=False)

x_dates = df.index.strftime('%Y-%m').sort_values().unique()

ax.set_xticklabels(labels=x_dates, rotation=45)

我得到了下图:

在此处输入图像描述

但正如您所见,xticklabels 不是很好。在阅读 Seaborn 的文档时,我找不到任何参数来设置 xticks 的数量。

我尝试只在 xticklabels 上这样做:

x_dates = df.index.strftime('%Y').sort_values().unique() 

但它也不起作用:

在此处输入图像描述

我谦虚地寻求帮助来解决这个问题。如果我跑题了,我很抱歉。

非常感谢您提前。

标签: pythonjupyter-notebookseabornheatmapmissing-data

解决方案


推荐阅读