我需要使用Pandas DataFrame TimeSeries列(df_all.ts)作为我的X轴创建MatplotLib热图(pcolormesh).
如何将Pandas TimeSeries列转换为可以在np.meshgrid(x,y)函数中用作X轴的东西来创建热图?解决方法是使用与pandas列中相同的参数创建Matplotlib drange,但有一种简单的方法吗?
x = pd.date_range(df_all.ts.min(),df_all.ts.max(),freq='H') xt = mdates.drange(df_all.ts.min(), df_all.ts.max(), dt.timedelta(hours=1)) y = arange(ylen) X,Y = np.meshgrid(xt, y)
behzad.nouri.. 20
我不知道时间序列的热图是什么意思,但对于数据框,您可以执行以下操作:
import numpy as np import pandas as pd import matplotlib.pyplot as plt from itertools import product from string import ascii_uppercase from matplotlib import patheffects m, n = 4, 7 # 4 rows, 7 columns df = pd.DataFrame(np.random.randn(m, n), columns=list(ascii_uppercase[:n]), index=list(ascii_uppercase[-m:])) ax = plt.imshow(df, interpolation='nearest', cmap='Oranges').axes _ = ax.set_xticks(np.linspace(0, n-1, n)) _ = ax.set_xticklabels(df.columns) _ = ax.set_yticks(np.linspace(0, m-1, m)) _ = ax.set_yticklabels(df.index) ax.grid('off') ax.xaxis.tick_top()
可选地,要在每个正方形的中间打印实际值,并且为了可读性而使用一些阴影,您可以执行以下操作:
path_effects = [patheffects.withSimplePatchShadow(shadow_rgbFace=(1,1,1))] for i, j in product(range(m), range(n)): _ = ax.text(j, i, '{0:.2f}'.format(df.iloc[i, j]), size='medium', ha='center', va='center', path_effects=path_effects)