使用Python绘制空气质量日历图

顾言
顾言
发布时间:2026-10-15 | 4人浏览过
原创

本文介绍如何利用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绘图相关内容,请搜索本站历史文章或浏览后续推荐内容,感谢大家的支持!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表