python时间为横轴的热图_python – 在seaborn热图上显示日期

Seaborn热图是一个绝对的情节.它从0到列数 – 1,在这种情况下从0到366.日期时间定位器和格式化程序期望值为日期(或更准确地说,与日期对应的数字).对于有问题的年份,将是730120(= 01-01-2000)和730486(= 01-01-2001)之间的数字.

因此,为了能够使用matplotlib.dates格式化程序和定位器,您需要首先将数据帧索引转换为datetime对象.然后,您可以不使用热图,而是使用允许数字轴的图,例如一个imshow情节.然后,您可以将该imshow绘图的范围设置为与要显示的日期范围相对应.

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.dates as mdates

df = pd.DataFrame(np.random.randn(367, 5),

index = pd.DatetimeIndex(start='01-01-2000', end='01-01-2001', freq='1D'))

dates = df.index.to_pydatetime()

dnum = mdates.date2num(dates)

start = dnum[0] - (dnum[1]-dnum[0])/2.

stop = dnum[-1] + (dnum[1]-dnum[0])/2.

extent = [start, stop, -0.5, len(df.columns)-0.5]

fig, ax = plt.subplots()

im = ax.imshow(df.T.values, extent=extent, aspect="auto")

ax.xaxis.set_major_locator(mdates.MonthLocator())

ax.xaxis.set_minor_locator(mdates.DayLocator())

ax.xaxis.set_major_formatter(mdates.DateFormatter('%b'))

fig.colorbar(im)

plt.show()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值