如何实现疫情数据的可视化,带有热力地图

干活,如何实现那种可视化地图

回顾3年疫情地图,进行数据可视化,首先看效果
实现地图热力显示,柱状图显示,最终实现动画效果

在这里插入图片描述在这里插入图片描述

获取数据

使用api接口:

https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?province=xxx

把xxx换成某个省份即可。

使用python的requests包进行获取数据,在我的代码里只统计了每日的确诊数据,最后写入到csv文件中。


#数据爬取
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
response = requests.get("https://api.inews.qq.com/newsqa/v1/query/pubished/daily/list?province=湖北",headers = headers)
data=json.loads(response.text)
 
#处理爬取后的数据 只统计确诊数据
datalist=data['data']
datacsv=[['province','time','confirmed']]
for num in range(len(datalist)):
datacsv.append([datalist[num]['province'],str(datalist[num]['year'])+'.'+str(datalist[num]['date']),datalist[num]['newConfirm']])
 
df = pd.DataFrame(datacsv)
df.to_csv(r'output\湖北.csv',header=False,index=False,mode='a')

绘制地图

将所有数据爬取后进行整理,使用pyecharts进行绘制。示例代码
可以实现某个省份的热力图

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker
 
provinces=['内蒙古', '台湾', '上海', '澳门', '湖南', '浙江', '江苏']
value=[56, 22, 51, 112, 112, 40, 67]
 
c = (
#Map( init_opts=opts.InitOpts(width="1900px", height="900px", bg_color="#ADD8E6",page_title="4.15全球疫情确诊人数",theme="white"))
Map()
.add("",[list(z) for z in zip(provinces, value)], "china",label_opts=opts.LabelOpts(is_show=False),is_map_symbol_show=False,)
 
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="2022.1.2"),
visualmap_opts=opts.VisualMapOpts(max_=200),
)

)
#c.render("map_world.html") #输出为html
c.render_notebook() #jupyter显示

这里注意,如果你使用jupyter运行代码,那么可以使用c.render_notebook()显示结果,无需保存到本地显示。

绘制动画

使用了pyecharts的时间轴组件Timeline。示例:

from pyecharts import options as opts
from pyecharts.charts import Map, Timeline
from pyecharts.faker import Faker
time=['2020.01.20', '2020.01.21', '2020.01.22', '2020.01.23', '2020.01.24',
 '2020.01.25', '2020.01.26', '2020.01.27', '2020.01.28', '2020.01.29']
tl = Timeline()
for i in time:
    map0 = (
        Map()
        .add("", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
        .set_global_opts(
            title_opts=opts.TitleOpts(title="{}数据".format(i)),
            visualmap_opts=opts.VisualMapOpts(max_=200),
        )
    )
    tl.add(map0, "{}".format(i))
#tl.render("timeline_map.html")
tl.render_notebook() #jupyter显示
公众号    52DATA   看看源码



在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yanyanxiaobaobei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值