欢迎来到代码驿站!

Python代码

当前位置:首页 > 软件编程 > Python代码

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

时间:2022-07-08 10:29:24|栏目: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将图片文件转换成base64编码的方法

栏    目:Python代码

下一篇:详解Django中的unittest及应用

本文标题:使用Python绘制空气质量日历图

本文地址:http://www.codeinn.net/misctech/207212.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有