gpt4 book ai didi

python - 使用 pandas TimeSeries 创建热图

转载 作者:太空狗 更新时间:2023-10-29 17:57:59 25 4
gpt4 key购买 nike

我需要使用 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)

最佳答案

我不知道你所说的时间序列的热图是什么意思,但对于数据框,你可以按如下方式进行:

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)

heat-map

关于python - 使用 pandas TimeSeries 创建热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20520246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com