这篇文章主要基于百度疫情实时大数据报告数据, 利用了 Python 中的可视化库 pyecharts 给大家分享了省位地图的制作和轮播图的制作方法.
大家好, 我是 Python 进阶者.
前言
前几天有个学生娃子找我帮忙做点可视化的作业, 其实倒是也不难, 觉得挺有意思, 这里拿出来给大家分享, 主要是完成了轮播图的制作, 显得作业高大上一些. 这篇文章参考了黄伟大佬的文章: 酷炫的迁徙图和轮播图, 用 pyecharts 轻松做出来.
数据来源
首先是数据来源, 来自百度疫情实时大数据报告, 如下图所示.
其实关于这页面上的数据采集, 之前也有一篇文章写过的, 这里不在赘述了, 可以看这里: 手把手教你用 Python 获取新冠疫情数据并进行可视化.
实现过程
新增感染病例
这里直接上代码和效果图, 如下所示:
- from pyecharts.charts import Map, Timeline
- from pyecharts import options as opts
- # 准数据
- shanxi_city = ["西安市", "延安市", "咸阳市", "渭南市", "安康市", "汉中市", "宝鸡市", "铜川市", "商洛市", "榆林市", "韩城市", "杨凌示范区"]
- shanxi_data = [46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- # 绘制陕西疫情地图
- map = (
- Map()
- .add('陕西省', [(i, j) for i, j in zip(shanxi_city, shanxi_data)], '陕西')
- .set_global_opts(title_opts=opts.TitleOpts(title='陕西省新增感染病例疫情图'), visualmap_opts=opts.VisualMapOpts(max_=50, is_piecewise=True))
- )
- # 渲染数据
- map.render('陕西省新增感染病例疫情图. html')
运行之后, 得到的效果图如下所示:
现有病例
代码和上面差不多, 只需要更改下数据即可, 这里直接放效果图了, 如下图所示:
累计病例
代码和上面差不多, 只需要更改下数据即可, 这里直接放效果图了, 如下图所示:
治愈病例
代码和上面差不多, 只需要更改下数据即可, 这里直接放效果图了, 如下图所示:
死亡病例
代码和上面差不多, 只需要更改下数据即可, 这里直接放效果图了, 如下图所示:
轮播图
这里给大家分享轮播效果图的代码, 原理倒是不难, 后面自己直接套用就行, 代码如下:
- from pyecharts.charts import Map, Timeline
- from pyecharts import options as opts
- # 1. 准数据
- shanxi_city = ["西安市", "延安市", "咸阳市", "渭南市", "安康市", "汉中市", "宝鸡市", "铜川市", "商洛市", "榆林市", "韩城市", "杨凌示范区"]
- xinzeng = [46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- xianyou = [1747, 13, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0]
- leiji = [2094, 21, 31, 18, 26, 26, 13, 8, 7, 3, 1, 1]
- zhiyu = [304, 8, 20, 17, 26, 26, 13, 8, 7, 3, 1, 1]
- siwang = [3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- # 2. 绘制新增疫情地图: 格式一
- map1 = (
- Map(init_opts=opts.InitOpts(width="700px", height="300px", theme="blue"))
- .add('新增病例', [(i, j) for i, j in zip(shanxi_city, xinzeng)], '陕西')
- .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=50))
- )
- # 3. 绘制现有疫情地图: 格式二
- map2 = (
- Map()
- .add('现有病例', [(i, j) for i, j in zip(shanxi_city, xianyou)], '陕西')
- .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=1750, is_piecewise=True))
- )
- # 4. 绘制累计疫情地图: 格式三
- map3 = (
- Map()
- .add('累计病例', [(i, j) for i, j in zip(shanxi_city, leiji)], '陕西')
- .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=2100, is_piecewise=True))
- )
- # 5. 绘制治愈疫情地图: 格式四
- map4 = (
- Map()
- .add('治愈病例', [(i, j) for i, j in zip(shanxi_city, zhiyu)], '陕西')
- .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=310, is_piecewise=True))
- )
- # 6. 绘制死亡疫情地图: 格式五
- map5 = (
- Map()
- .add('死亡病例', [(i, j) for i, j in zip(shanxi_city, siwang)], '陕西')
- .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=3, is_piecewise=True))
- )
- # 7. 创建组合类对象
- timeline = Timeline(init_opts=opts.InitOpts(width='720px', height='350px'))
- # 8. 在组合对象中添加需要组合的图表对象
- timeline.add(chart=map1, time_point="陕西省新增病例疫情图")
- timeline.add(chart=map2, time_point="陕西省现有病例疫情图")
- timeline.add(chart=map3, time_point="陕西省累计病例疫情图")
- timeline.add(chart=map4, time_point="陕西省治愈病例疫情图")
- timeline.add(chart=map5, time_point="陕西省死亡病例疫情图")
- timeline.add_schema(is_auto_play=True, play_interval=2000)
- # 9. 渲染数据
- timeline.render('陕西省疫情轮播图. html')
实现的效果图如下:
实际上它是动态的, 我这里没有转 gif 格式, 看上去有点干巴, 问题不大.
总结
大家好, 我是 Python 进阶者. 这篇文章主要基于百度疫情实时大数据报告数据, 利用了 Python 中的可视化库 pyecharts 给大家分享了省位地图的制作和轮播图的制作方法.
来源: http://developer.51cto.com/art/202201/699095.htm