我有一个看起来像这样的数据框(左列是索引):
YYYY-MO-DD HH-MI-SS_SSS ATMOSPHERIC PRESSURE (hPa) mean
2016-11-07 14:00:00 1014.028782
2016-11-07 15:00:00 1014.034111
.... ....
2016-11-30 09:00:00 1006.516436
2016-11-30 10:00:00 1006.216156
现在我想用这些数据绘制一个色彩图 - 所以我想创建一个X(水平轴)只是日期:
2016-11-07, 2016-11-08,...,2016-11-30
和Y(垂直轴)为时间:
00:00:00, 01:00:00, 02:00:00, ..., 23:00:00
最后将Z(颜色图)作为每个日期和时间[f(x,y)]的压力数据。
如何安排此类绘图的数据?
谢谢!
答案 0 :(得分:2)
准备好测试数据:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
samples = 24 * 365
index = pd.date_range('2017-01-01', freq='1H', periods=samples)
data = pd.DataFrame(np.random.rand(samples), index=index, columns=['data'])
我会做这样的事情:
data = data.reset_index()
data['date'] = data['index'].apply(lambda x: x.date())
data['time'] = data['index'].apply(lambda x: x.time())
pivoted = data.pivot(index='time', columns='date', values='data')
fig, ax = plt.subplots(1, 1)
ax.imshow(pivoted, origin='lower', cmap='viridis')
plt.show()
产生:
为了改善轴标记,这是一个开始:
ax.set_yticklabels(['{:%H:%M:%S}'.format(t) for t in data['time'].unique()])
ax.set_xticklabels(['{:%Y-%m-%d}'.format(t) for t in data['date'].unique()])
但是您需要弄清楚如何选择标签与set_xticks()
和set_yticks()