seaborn.heatmap 跳过数据

seaborn.heatmap skips data

通过 seaborn 创建热图时 seaborn==0.7.0.dev0 我的轴在两个小时后开始。 用于创建热图的 DataFrame 起始于:

2015-05-19 21:10:00

然而,通过 seaborn 创建的热图的第一个 get_xticklabels 是 2015-05-19 23:10:00

热图是通过

创建的

sns.heatmap(df_test.T, xticklabels=True, yticklabels=True, ax=ax)

我在这里错过了什么? 这个例子(使用 seaborn 0.7 和 0.6)将在一小时后开始,在我的真实数据中甚至是 2 小时。

import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

index = pd.date_range('1/1/2000', periods=60*60*12, freq='s')


df = pd.DataFrame({'a': pd.Series(np.random.randn(len(index)), index=index),
                   'b': pd.Series(np.random.randn(len(index)), index=index)})

#create boolean vars
df.a = df.a > 0
df.b = df.b > 0

df = df.resample('1Min', how=np.mean)

ax = plt.gca()
fig = plt.gcf()


sns.heatmap(df.T, ax=ax)

#print index
print df.index[0]

#print first xlabel
print ax.get_xticklabels()[0]

[label.set_visible(False) for label in ax.xaxis.get_ticklabels()[1:]]
plt.gcf().autofmt_xdate()
plt.show()

这将导致以下输出

user@debian:/tmp$ python test.py 
2000-01-01 00:00:00
Text(0.5,0,u'2000-01-01T01:00:00.000000000+0100')

好的结果是创建索引时缺少 tz= 值,它给出了示例代码中的偏移量。

我的解决方案(因为在我的 DataFrame 中更改 tz 并没有改变这种行为)是在 heatmap() 中设置 xticklabel=False 并直接使用 plt.xticks()