好奇心Log 发表于 2024-3-11 16:13:06

python可视化 | 单站空气质量日历图可视化

本帖最后由 好奇心Log 于 2024-4-3 00:17 编辑

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


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

数据
我这里使用的是2020年北京市各个监测站点的空气质量观测数据,原始数据包含PM2.5,PM10,AQI指数,这里选择AQI作为示例。
这里对原始数据做了简单处理,具体过程不赘述,感兴趣的话也可以看文末获取方式。处理后的数据形式如下:


calmap
绘制日历图可以用calmap库直接绘制,安装直接用pip。
详细可视化方法如下:

定义可视化方式
def calendar_heatmap(df, title):
    # 定义颜色
    color_list = ['#009966', '#FFDE33', '#FF9A32', '#CC0033', '#660099']
    levels =

    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()
    cb= mpl.colorbar.ColorbarBase(
      cbar_ax,
      cmap=cmap,
      ticks=levels,            
      norm=norm,
      orientation='vertical',               
      extend='neither',
      extendrect=True,                        
      extendfrac=0.15
    )
   
    # 色标
    cb.set_ticks()
    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=,
    right=False
).value_counts()

dx_bin = pd.cut(
    dx,
    bins=,
    right=False
).value_counts()


本篇文章来源于公众号:好奇心Log



暗恋桃花源 发表于 2024-3-14 09:49:27

请问 数据在哪一步加载进去??

第八星系人气爱 发表于 2024-4-2 00:32:15

暗恋桃花源 发表于 2024-3-14 09:49
请问 数据在哪一步加载进去??

应该要自己导入一下数据

WinonaSpen 发表于 2024-4-27 10:25:42

这个解决方案非常巧妙,我以前没想到过。
页: [1]
查看完整版本: python可视化 | 单站空气质量日历图可视化