calplot简介
相信很多人都会在 Github 中看到这么一个热图,该热图记录的是 Github 平台使用的日常贡献。在每个日历年的热图中以天为单位采样的时间序列数据。GitHub 的贡献图表示用户在过去几年中所做的贡献数量。色块表示贡献的数量,如色标下方所示。从这张热图中,我们可以检测到每天的贡献模式。
calplot 是一个用于在 Python 中创建日历热图(Calendar Heatmap)的库。日历热图是一种数据可视化形式,通常用于展示时间序列数据在日历上的分布情况,非常适合展示数据在一年中的变化模式,比如展示每日活动量、错误数量、销售额等。
calplot 主要功能包括:
- 日历视图:提供了一个月或年的日历视图,可以清晰地看到特定日期的数据分布。
- 自定义日期范围:允许用户根据需要选择查看的日期范围,非常灵活。
- 颜色编码:通常使用颜色来区分不同的数据值或类别,使得数据的对比更加明显。
- 时间粒度选择:可以选择展示天、周、月等不同时间粒度的数据。
calplot的使用
可以通过 pip 安装 calplot:pip install calplot
接口说明
calplot.yearplot 和 calplot.calplot 是 Python 中 calplot 库的两个不同函数,用于创建日历热图(calendar heatmaps),但它们的功能和使用场景有所不同:
calplot.yearplot
- 该函数用于绘制一个或多个年份的日历热图。
- 它通常用于展示跨越多个年份的数据,每个年份的数据会被绘制在单独的子图中。
- 该函数提供了灵活的参数设置,可以控制每个子图的显示方式,例如是否显示年份标签、排序方式等。
- 适用于需要对比多个年份的数据变化趋势的场景。
calplot.yearplot(data, year=None, how='sum', vmin=None, vmax=None, cmap='viridis', fillcolor='whitesmoke', linewidth=1, linecolor=None, edgecolor='gray', daylabels=['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], dayticks=True, dropzero=None, textformat=None, textfiller='', textcolor='black', monthlabels=['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], monthlabeloffset=15, monthticks=True, ax=None, **kwargs)
参数说明:
- dataSeries:绘图的数据。必须由 DatetimeIndex 索引。
- year (整数):仅绘制由该年份索引的数据。如果为 None,则绘制有数据的第一个年份。
- how (字符串):按天重新采样数据的方法。如果为 None,假设数据已按天采样且不重新采样。否则,将其传递给 Pandas 的resample 方法。
- vmin, vmax (浮点数):用于固定色彩图的值。如果为 None,则在按天重新采样数据后使用最小值和最大值。
- cmap:matplotlib 的色彩图名称或对象。用于将数据值映射到颜色空间。
- fillcolor:matplotlib 颜色。用于无数据的日子的颜色。
- linewidth (浮点数):划分每一天的线的宽度。
- linecolor:划分每一天的线的颜色。如果为 None,则使用坐标轴的背景色,若背景色透明则使用“白色”。
- daylabels (列表):用于表示每天的标签字符串,长度必须为7。
- dayticks (列表、整数或布尔值):如果为 True,标记所有天。如果为 False,不标记天。如果为列表,仅标记具有这些索引的天。如果为整数,则每隔 n 天标记。
- dropzero (布尔值):如果为 True,不为值为零的日子填充颜色。
- monthlabels (列表):用于表示每月的标签字符串,长度必须为12。
- monthlabeloffset (整数):用于调整每月标签水平对齐的日偏移量。
- monthticks (列表、整数或布尔值):如果为 True,标记所有月。如果为 False,不标记月。如果为列表,仅标记具有这些索引的月。如果为整数,则每隔 n 月标记。
- edgecolor:划分每个月的线的颜色。
- textformat (字符串):网格单元格文本的格式字符串。
- textfiller (字符串):无数据单元格的网格单元格文本的备用文本。
- textcolor:网格单元格文本的颜色。
- ax:matplotlib 的 Axes。在其中绘制图形,否则使用当前活动的 Axes。
- kwargs:其他关键字参数。所有其他关键字参数都传递给 matplotlib 的pcolormesh 方法。
calplot.calplot
- 该函数用于绘制单个年份的日历热图。
- 它更适合于展示单一年份内的数据分布情况。
- 提供的参数可能更集中于单一年份的展示细节,例如月份和日的标签、颜色映射等。
- 适用于需要深入分析某一特定年份的数据模式的场景。
calplot.calplot(data, how='sum', yearlabels=True, yearascending=True, yearlabel_kws=None, subplot_kws=None, gridspec_kws=None, figsize=None, fig_kws=None, colorbar=None, suptitle=None, suptitle_kws=None, tight_layout=True, **kwargs)
参数说明:
- dataSeries:绘图的数据。必须由 DatetimeIndex 索引。
- how (字符串):按天重新采样数据的方法。如果为 None,假设数据已按天采样且不重新采样。否则,将其传递给 Pandas 的resample 方法。
- figsize (浮点数, 浮点数):绘图的图形尺寸。
- suptitle (字符串):绘图的标题。
- yearlabels (布尔值):是否为每个子图绘制年份标签。
- yearascending (布尔值):以升序或降序排序日历。
- yearlabel_kws (字典):传递给 matplotlib 的 set_ylabel 调用的关键字参数,用于绘制每个子图的年份。
- subplot_kws (字典):传递给 matplotlib 的 subplots 调用的关键字参数。
- gridspec_kws (字典):传递给 matplotlib 的 GridSpec 构造函数的关键字参数,用于创建放置子图的网格。
- fig_kws (字典):传递给 matplotlib 的 subplots 调用的关键字参数。
- suptitle_kws (字典):传递给 matplotlib 的 suptitle 调用的关键字参数。
- kwargs:其他关键字参数。所有其他关键字参数都传递给 yearplot。
使用示例
import calplot import pandas as pd import numpy as np # 生成一年的随机数据 np.random.seed(0) all_days = pd.date_range('1/1/2022', periods=365, freq='D') events = np.random.randint(0, 100, size=(len(all_days))) # 创建一个时间序列数据 data = pd.Series(events, index=all_days) # 使用 calplot 绘制年度日历热图 calplot.calplot(data, cmap='YlGn', linewidth=0.5, yearlabel_kws={'color':'black', 'fontsize':12}, subplot_kws={'title':'Daily Event Intensity'})
其他工具:
参考链接: