使用日历热图进行时序数据可视化

本文介绍了如何使用calplot库在Python中创建GitHub贡献热图,展示了如何自定义边框颜色、年份标签样式、添加文本标签、隐藏颜色条以及设置标题等。通过实例代码详细解析了各种参数的用法,帮助读者更好地理解和应用时间序列数据的可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2af9b79b75627497ea813fbb285ad7fa.gif

作者 | 云朵君

来源丨数据STUDIO

相信很多人都会在 Github 中看到这么一个热图,该热图记录的是 Github 平台使用的日常贡献。在每个日历年的热图中以天为单位采样的时间序列数据。GitHub 的贡献图表示用户在过去几年中所做的贡献数量。色块表示贡献的数量,如色标下方所示。从这张热图中,我们可以检测到每天的贡献模式。

98b34d68965582f03d26ae13fe1dbf73.png

Github

时间序列数据

时间序列数据是随着时间的推移收集并按照一定规则排序的一系列数据,如时间序列中的每小时、每天、每月或每年的数据序列。时间序列的应用包括来自工业过程的传感器读数、降水、降雨、温度或农业作物生长等天气数据,患者在一段时间内的医疗记录等。时间序列分析发现隐藏的模式,如趋势或季节性。

日历热图

日历热图使用彩色单元格,通常采用单一基色色调,并使用其明度、色调和饱和度进行扩展(如从浅到深的蓝色)。它在日历视图中显示每天事件的相对数量。每天按周排列,按月和年分组。这使你能够快速识别每天和每周的模式。

Calplot

可视化是深入了解数据的好方法。在检查时间序列数据时,必须从数据中了解季节性或周期性行为(如果涉及)。使用 calplot python 库创建热图。Calplot 从 Pandas 时间序列数据创建热图。

pip install calplot
Collecting calplot
  Downloading calplot-0.1.7.4-py3-none-any.whl (8.2 kB)
Installing collected packages: calplot
Successfully installed calplot-0.1.7.4

基本绘图

import calplot
import numpy as np; np.random.seed(sum(map(ord, 'calplot')))
import pandas as pd
all_days = pd.date_range('1/1/2019', periods=730, freq='D')
days = np.random.choice(all_days, 500)
events = pd.Series(np.random.randn(len(days)), index=days)
calplot.calplot(events)
7b4aa74b63c10210910ee47cc81f4a11.png

隐藏边界

边界相关参数:edgecolor ,指的是分隔月份的线条的颜色。将其设置为None即为隐藏边界。

all_days = pd.date_range('1/1/2019', periods=360, freq='D')
days = np.random.choice(all_days, 500)
events = pd.Series(np.random.randn(len(days)), index=days)
calplot.calplot(events, edgecolor=None, cmap='YlGn')

61435c1bb368a35bb1fcc97e6de9e235.png

calplot_edgecolor_None

更改边界年份样式

参数yearlabel_kws传递给 matplotlib set_ylabel调用的关键字参数用于绘制每个子图的年份。该参数接受一个字典,可以设置颜色,大小等样式。

calplot.calplot(events, 
                yearlabel_kws={'color': 'black'},
                cmap='YlGn')

dfc73d075e57afedce65e99952fefee1.png

calplot_yearcolor_black

添加文本标签

和普通热图类似,可以在每个小格子上显示具体数值,通过参数textformattextfiller控制,分别表示网格单元文本的字符串格式,以及网格单元格的在文本缺失数据的时显示的文本样式。

calplot.calplot(events, textformat='{:.0f}',
                textfiller='-', cmap='YlGn')

07657329f60880328ab66068253982d7.png

calplot_textformat

隐藏颜色条

热图右边都会有个颜色线条,以注明每种颜色的颜色范围,如果你不需要显示,可以将参数 colorbar 设置为 False

calplot.calplot(events, colorbar=False, cmap='YlGn')

529cb482e6694f863f81289e48b8a60c.png

calplot_colorbar_False

设置title

控制热图标题的参数suptitle,接受一个字符串。

calplot.calplot(events, 
                suptitle='Random data from standard normal distribution', 
                cmap='YlGn')

e1518a359f9300467f769bc653f58f2c.png

calplot_suptitle

隐藏热图的边线

控制将每天分开的线的宽度参数linewidth,如果要将其隐藏,可以将其直接设置为0即可。

calplot.calplot(events, linewidth=0, cmap='YlGn')

6d65b6a4352115ce714106068ac0b7f6.png

calplot_linewidth_zero

更多详情请见:https://calplot.readthedocs.io/en/latest/

技术

利用Pandas进行分类数据编码的十种方式

资讯

上云避坑指南|上云一时爽,遇坑两行泪

技术

手把手教你用Python绘制桑葚图!

技术

10个有趣的Python高级脚本!

2d14433226afe0646fa252a28dca5fcd.png

分享

858c629fcc72514c741cb53713d2c03b.png

点收藏

6bfe8f51ae7f98fb7657bc73ac7f12f4.png

点点赞

9acf7921851d873becef2d069642d023.png

点在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值