安排pandas DataFrame进行颜色绘图

时间:2017-02-08 10:13:29

标签: python pandas matplotlib plot

我有一个看起来像这样的数据框(左列是索引):

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)]的压力数据。

如何安排此类绘图的数据?

谢谢!

1 个答案:

答案 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()

产生:

enter image description here

为了改善轴标记,这是一个开始:

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()

一起出现的频率