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

 更新时间:2022年05月08日 10:23:26   作者:蚂蚁ailing  
这篇文章主要介绍了使用Python绘制空气质量日历图,文章基于Python绘制的相关知识展开对空气质量日历图的绘制,感兴趣的小伙伴可以参考一下

前言

在github中经常可以看到下面的日历图,可以用来表示每一天在github上的活跃程度。

类似的方法也可以用到空气质量的可视化方式中来,只要有每天的空气质量指数就可以。

数据

我这里使用的是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代码覆盖率统计工具coverage.py用法详解

    Python代码覆盖率统计工具coverage.py用法详解

    这篇文章主要介绍了Python代码覆盖率统计工具coverage.py用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 深入理解Python中的 __new__ 和 __init__及区别介绍

    深入理解Python中的 __new__ 和 __init__及区别介绍

    这篇文章主要介绍了深入理解Python中的 __new__ 和 __init__及区别介绍,这两个方法的主要区别在于:__new__ 负责对象的创建而 __init__ 负责对象的初始化。具体内容详情大家跟随小编一起看看吧
    2018-09-09
  • pandas Dataframe行列读取的实例

    pandas Dataframe行列读取的实例

    今天小编就为大家分享一篇pandas Dataframe行列读取的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python中8种运算符介绍以及示例

    Python中8种运算符介绍以及示例

    在Python编程中运算符是用于执行各种操作的特殊符号或关键字,下面这篇文章主要给大家介绍了关于Python中8种运算符介绍以及示例的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • Python实时获取cmd的输出

    Python实时获取cmd的输出

    本文给大家分享python实时获取cmd的输出,对python实时获取输出相关知识感兴趣的朋友一起学习吧
    2015-12-12
  • tensorflow-gpu安装的常见问题及解决方案

    tensorflow-gpu安装的常见问题及解决方案

    这篇文章主要介绍了tensorflow-gpu安装的常见问题及解决方案,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧,需要的朋友可以参考下
    2020-01-01
  • Python中的四种交换数值的方法解析

    Python中的四种交换数值的方法解析

    这篇文章主要介绍了Python中的四种交换数值的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python扫描IP段查看指定端口是否开放的方法

    Python扫描IP段查看指定端口是否开放的方法

    这篇文章主要介绍了Python扫描IP段查看指定端口是否开放的方法,涉及Python使用socket模块实现端口扫描功能的相关技巧,需要的朋友可以参考下
    2015-06-06
  • Python爬虫请求模块Urllib及Requests库安装使用教程

    Python爬虫请求模块Urllib及Requests库安装使用教程

    requests和urllib都是Python中常用的HTTP请求库,使用时需要根据实际情况选择,如果要求使用简单、功能完善、性能高的HTTP请求库,可以选择requests,如果需要兼容性更好、功能更加灵活的HTTP请求库,可以选择urllib
    2023-11-11
  • 发布你的Python模块详解

    发布你的Python模块详解

    这篇文章主要介绍了发布你的Python模块详解的相关资料,需要的朋友可以参考下
    2016-09-09

最新评论