使用Python绘制空气质量日历图
作者:蚂蚁ailing 发布时间:2023-06-20 12:19:21
标签: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()
最后
这一篇给大家简单的制作这么一个日历图,代码就放到上面了,喜欢的小伙伴记得点赞收藏,下一章见啦。
来源:https://www.cnblogs.com/123456feng/p/16112309.html
0
投稿
猜你喜欢
- _del_类的析构方法,它在对象被回收时执行,主要的作用时用来释放资源(内存 文件 进程等)因为Python内存回收机制,使得Python的
- 一般情况下,mysql会默认提供多种存储引擎,可以通过下面的查看:1)查看mysql是否安装了innodb插件。通过下面的命令结果可知,已经
- 做沙盒的时候遇到一个小问题——在IE9里面竟然抓不到事件的keyCode:element.addEventListener('key
- 学习Python Web和Django开发不能只学习Python。我们有时必需借助其它技术比如AJAX实现我们想要的功能。今天我们就要利用D
- 在用Python做开发的时候经常会用到数据库或者其他需要动态配置的东西,硬编码在里面每次去改会很麻烦。Python自带有读取配置文件的模块C
- 1、下载gliffy-confluence-plugin-9.1.2.obr2、解压后找到GliffyLicenseManager.clas
- 本文实例讲述了Python基于pygame实现图片代替鼠标移动效果。分享给大家供大家参考,具体如下:想想现在学校pygame有几个钟了,就写
- 一 下载安装驱动官方文档https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo下载地址ht
- 一、环境搭建1、安装python+pycharm软件 。python安装网址官网:https://www.python.org/about/
- 弹出框有两种:页面弹出框(可定位元素能操作)、Windows弹出框(不能直接定位)一、页面弹出框等待弹出框出现之后,定位弹出框,操作其中元素
- you-get是github上python的一个开源库(https://github.com/soimort/you-get),使用you-
- root账户为MySQL的超级管理员用户,拥有MySQL提供的所有权限。我们登录了root账户可以重置其它创建的所有用户的密码,那么root
- 在使用Django过程中需要开发一些API给其他系统使用,为了安全把Token等验证信息放在header头中。如何获取:使用request.
- 版本一conda install xxx:这种方式安装的库都会放在/Users/orion-orion/miniforge3/pkgs目录下
- 装饰器(Decorators)装饰器是这样一种设计模式:如果一个类希望添加其他类的一些功能,而不希望通过继承或是直接修改源代码实现,那么可以
- 在项目中遇到一情况让困扰了半天,同一张PNG8图片为何部份图标在IE6中消失呢?当时一度怀疑是cache或hosts问题反反复复开关浏览器结
- 现在的高手真是越来越多,我刚发现一个版主兄竟然在不支持数据库的ISP免费主页上使用数据库,套用QQ聊天的一句话就是:Faint!明明人家IS
- Python FastAPI请求参数传递FastAPI多参数传递类型FastAPI通过模板来匹配URL中的参数列表,大致有如下三类方式传递参
- 合并对象的方法1. 使用展开运算符展开运算符(spread operator)提供了一种简洁的语法来合并对象。它使用{...}包裹需要合并的
- SQL server2000数据库应用非常广泛,一旦出现安全问题,造成的损失往往难以估量!应提前预防,防患于未然。这里,我们主要谈论有关SQ