使用Python绘制空气质量日历图
本文介绍如何利用Python的calmap库绘制空气质量日历热力图。通过处理2020年北京监测站点的AQI数据,展示如何定义颜色映射、生成全年日历图及统计各站点空气质量分布,为环境数据可视化提供实用示例。
前言
在GitHub平台上,用户常能看到一种展示每日活跃度的日历图。这种可视化方式直观地反映了代码提交或项目参与的热度分布。

同样的可视化思路同样适用于空气质量数据的展示,只要拥有每日的空气质量指数(AQI)数据,即可生成类似的日历热力图。
数据
本文示例采用2020年北京市各监测站点的空气质量观测数据。原始数据包含PM2.5、PM10及AQI指数,此处选取AQI作为主要分析指标。
原始数据已进行预处理,具体处理流程此处略过,感兴趣的读者可通过文末提供的资源获取完整数据及处理代码。
经过处理后的数据格式如下所示:

calmap
绘制此类日历图可直接使用calmap库,通过pip命令即可快速安装该依赖库。
具体的可视化实现步骤如下:
首先定义可视化的配色方案与参数。
def calendar_heatmap(df, title):
# 定义颜色
color_list = ['#009966', '#FFDE33', '#FF9A32', '#CC0033', '#660099']
levels = [0, 50, 100, 150, 200, 300]
cmap = colors.ListedColormap(color_list)
norm = colors.BoundaryNorm(levels, cmap_aqi.N)
# 绘图
fig, ax = plt.subplots(figsize=(18, 9))
calmap.yearplot(
df,
vmin=0,
vmax=300,
cmap=cmap,
norm=norm,
how=None,
year=2020,
)
cbar_ax = fig.add_axes([0.94, 0.4, 0.015, 0.2])
cb = mpl.colorbar.ColorbarBase(
cbar_ax,
cmap=cmap,
ticks=levels,
norm=norm,
orientation='vertical',
extend='neither',
extendrect=True,
extendfrac=0.15
)
# 色标
cb.set_ticks([0, 50, 100, 150, 200, 300])
cb.ax.yaxis.set_tick_params(length=0.01)
ax.set_ylabel('2020', fontdict=dict(fontsize=25, color='grey'))
# 标题
ax.set_title(f'AQI of {title}', fontweight = 'bold', fontsize = 25)
plt.savefig(f'{title}_calendar_heatmap.png')接着执行绘图操作,生成日历热力图。
cp = df.resample('1d').mean().round(2)['昌平']
calendar_heatmap(cp, 'Changping')
dx = df.resample('1d').mean().round(2)['大兴']
calendar_heatmap(dx, 'DaXing')
最后,对两个监测站点的全年空气质量数据进行统计汇总。
cp_bin = pd.cut(
cp,
bins=[0, 50, 100, 150, 200, 300],
right=False
).value_counts()
dx_bin = pd.cut(
dx,
bins=[0, 50, 100, 150, 200, 300],
right=False
).value_counts()
最后
本文简要演示了日历热力图的绘制过程,完整代码已提供。欢迎喜欢的读者点赞收藏,更多内容将在后续章节更新。
至此,关于使用Python绘制空气质量日历图的教程介绍完毕。如需了解更多Python绘图相关内容,请搜索本站历史文章或浏览后续推荐内容,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









