美文网首页
爬虫+matplotlib绘制全球空气质量图

爬虫+matplotlib绘制全球空气质量图

作者: 少年皓 | 来源:发表于2018-12-05 12:59 被阅读0次

注:本文中部分功能的实现方法的纠正和改进记录于后续文章。


目的如题,使用到的资源如下:

1、python3开发环境

2、request库

3、numpy库

4、chrome浏览器

5、空气质量数据网站:https://aqicn.org/map/china/cn/

Ok, let's go!


步骤如下:

1、初始化

import requests
import numpy as np
import matplotlib.pyplot as plt

Ok!


2、爬数据

用chrome浏览器打开目标网站——》

目标网站

右键—检查—network—查看Request URL——》

提取URL

URL:https://api.waqi.info/mapq/bounds/?bounds=11.350796722383672,78.66210937500001,54.87660665410869,128.58398437500003&inc=placeholders&k=2Y2EvHR9IFVgcIydDSTJWXmpjeEc9AyNSFkYzYw==&=1543983476327

观察发现上面URL中bounds表示当前页面显示的坐标范围,经过测试将其改为——》

https://api.waqi.info/mapq/bounds/?bounds=-50,-160,74,180&inc=placeholders&k=2Y2EvHR9IFVgcIydDSTJWXmpjeEc9AyNSFkYzYw==&=1543983476327

注意只改bounds,其余不用动。

添加代码爬+简单清理——》

r=requests.get('https://api.waqi.info/mapq/bounds/?bounds=-50,-160,74,180&inc=placeholders&k=_2Y2EvHR9IFVgcIydDSTJWXmpjeEc9AyNSFkYzYw==&_=1543983476327')
len(r.json())
rr = r.json()
a = []
b = []
c = []
for i in rr:
    lat = int(i['lat'])    #纬度
    lon = int(i['lon'])    #经度
    aqi = i['aqi']    #PM2.5空气质量指数
    if (aqi < '0' or aqi > '998'):    #清理无效数据
        aqi = '0'
    aqi=int(aqi)
    a.append(lat)
    b.append(lon)
    c.append(aqi)

Ok!


3、绘制图形

添加代码——》

height = np.max(a) + 1
width = np.max(b) + 1
arr = np.zeros((height, width))    #构造矩阵
for i in range(len(a)):
    arr[a[i], b[i]] = c[i]
plt.matshow(arr, cmap='hot')    #或者使用plt.imshow(arr, cmap='hot') 
plt.colorbar()
plt.show()

绘制出图形如下,显示颜色及空气质量指标AQI关系见右侧条形柱——》

绘制图形

Ok!


总结:

1、数据清理部分代码不够专业精简。

2、图形坐标轴与实际经纬度不符。

3、采样数量不足导致构造的矩阵中零值过多,整体偏暗。

4、绘制图形没有世界地图作为背景,可视化效果欠佳。

相关文章

网友评论

      本文标题:爬虫+matplotlib绘制全球空气质量图

      本文链接:https://www.haomeiwen.com/subject/gnbicqtx.html