我有一个数据框,其中包含了一整年收集的数值数据,我想把它绘制成一个随时间变化的热图(类似于Github的贡献),其中
- 月沿着x轴绘制
- 天沿着y轴绘制
- 每个方框/数据点的颜色表示高/低数值:在下面的例子中,蓝色代表高数值,红色代表低数值。
我使用的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,实现这一点的最佳方法是什么?任何帮助都非常感谢!
它可以是像下面的图例一样简单的东西,其中的颜色/标签被替换为我的数据集。
1条答案
按热度按时间yjghlzjz1#
首先,您可以创建类似于this example的自定义离散色彩Map表。
其次,您可以创建一系列空图来保存图例的标签(假设您已经有了与每种颜色对应的标签列表)。
最后,
bbox_to_anchor
可用于将图例置于图外。有关此参数的更多详细信息,请参阅this excellent answer。希望有帮助。
结果是:
此外,calmap.yearplot源代码可以在这里找到。