我有一个包含全年收集的数值数据的数据框,我想将其绘制为随时间变化的热图(类似于 Github 贡献),其中
我正在使用 Python 库 calmap,它根据 Pandas 时间序列数据生成日历热图。这是我用来创建上述热图的代码。
days = df_activities.loc[:,'Date'].to_numpy()
events = pd.Series(df_activities.loc[:, 'ActivityLevel'].to_numpy(), index=days)
calmap.yearplot(events, cmap='RdYlBu', linewidth=0.3)
calmap.plt.title("Activity Data across 2022")
df_activites 的片段看起来像这样:
df_activites[['Date', 'ActivityLevel']].head(10)
Date ActivityLevel
0 2022-01-01 5.733
1 2022-01-02 1.317
2 2022-01-03 5.150
3 2022-01-04 7.283
4 2022-01-05 6.450
5 2022-01-06 8.933
6 2022-01-07 7.333
7 2022-01-08 8.483
8 2022-01-09 6.417
9 2022-01-10 5.517
问题:我想创建一个自定义图例来标记我的热图,并显示蓝色对应高活动水平,红色对应低活动水平。由于我使用的是 calmap 而不是 seaborn,因此实现此目标的最佳方法是什么?非常感谢任何帮助!
它可以像下面的图例一样简单,其中颜色/标签替换为我的数据集。
我想你可以尝试创建一个类似于this example的自定义离散颜色图:
from matplotlib import colors
cmap = colors.ListedColormap(['white', 'red'])
calmap.yearplot(events, cmap=cmap, vmin=events.min(), vmax=events.max(), linewidth=0.3)
或固定
vmin
/ vmax
可以根据需要使用。
我测试了这个例子,它似乎有效。