全国24小时降水量pyecharts可视化分析
分享一个小案例,爬虫抓取天气预报网站的降水量数据,并利用pyecharts库进行可视化生成动态的热力图。数据获取网站如下所示。
http://www.nmc.cn/publish/observations/24hour-precipitation.html
关键词:爬虫、动态网页、pyecharts可视化、降水量
一、导入相关库
import requests
import json
import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import Timeline
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.globals import GeoType
二、主要代码
如需要生成不同日期的降雨量热力图,只需要修改date的数值即可。
date = 20220920 # 修改日期即可,格式参考示例
tl = Timeline()
def data_to_24list(data):
data_24_list = []
for i in range(1, 24):
if i < 10:
data_24_list.append(str(data) + '0' + str(i))
else:
data_24_list.append(str(data) + str(i))
data_24_list.append(str(data) + '00')
return data_24_list
for data in data_to_24list(date):
print(f'现在日期为{data}....')
URL = f'http://www.nmc.cn/rest/real/rain/hour24/{data}'
req = requests.get(URL)
temp = json.loads(req.text)
D = str(data)
temp_pd = pd.DataFrame(temp['data']['data'])
temp_pd.columns = ["pname", "name", "code", "lng", "lat", "value", "url"]
map0 = (
Geo().add_schema(maptype='china',
label_opts=opts.LabelOpts(is_show=False)) # 展示地区名称
.add(series_name='',
data_pair=[(i, j) for i, j in zip(temp_pd.pname, temp_pd.values)],
type_=GeoType.HEATMAP)
.set_global_opts(
title_opts=opts.TitleOpts(
title=f"{D[:4]}-{D[4:6]}-{D[6:8]} 24小时降水量Geo"),
visualmap_opts=opts.VisualMapOpts(max_=250),
))
tl.add(map0, f"{D[:4]}-{D[4:6]}-{D[6:8]}-{D[8:]}")
tl.render("./24_timeline_rain_Geo.html")