基于百度疫情實(shí)時大數(shù)據(jù)報(bào)告數(shù)據(jù)使用Pyecharts庫制作省位地圖和輪播圖
大家好,我是Python進(jìn)階者。
前言
前幾天有個學(xué)生娃子找我?guī)兔ψ鳇c(diǎn)可視化的作業(yè),其實(shí)倒是也不難,覺得挺有意思,這里拿出來給大家分享,主要是完成了輪播圖的制作,顯得作業(yè)高大上一些。這篇文章參考了黃偉大佬的文章:酷炫的遷徙圖和輪播圖,用pyecharts輕松做出來。
數(shù)據(jù)來源
首先是數(shù)據(jù)來源,來自百度疫情實(shí)時大數(shù)據(jù)報(bào)告,如下圖所示。
其實(shí)關(guān)于這頁面上的數(shù)據(jù)采集,之前也有一篇文章寫過的,這里不在贅述了,可以看這里:手把手教你用Python獲取新冠疫情數(shù)據(jù)并進(jìn)行可視化。
實(shí)現(xiàn)過程
新增感染病例
這里直接上代碼和效果圖,如下所示:
- from pyecharts.charts import Map, Timeline
- from pyecharts import options as opts
- # 準(zhǔn)數(shù)據(jù)
- shanxi_city = ["西安市", "延安市", "咸陽市", "渭南市", "安康市", "漢中市", "寶雞市", "銅川市", "商洛市", "榆林市", "韓城市", "楊凌示范區(qū)"]
- 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))
- )
- # 渲染數(shù)據(jù)
- map.render('陜西省新增感染病例疫情圖.html')
運(yùn)行之后,得到的效果圖如下所示:
現(xiàn)有病例
代碼和上面差不多,只需要更改下數(shù)據(jù)即可,這里直接放效果圖了,如下圖所示:
累計(jì)病例
代碼和上面差不多,只需要更改下數(shù)據(jù)即可,這里直接放效果圖了,如下圖所示:
治愈病例
代碼和上面差不多,只需要更改下數(shù)據(jù)即可,這里直接放效果圖了,如下圖所示:
死亡病例
代碼和上面差不多,只需要更改下數(shù)據(jù)即可,這里直接放效果圖了,如下圖所示:
輪播圖
這里給大家分享輪播效果圖的代碼,原理倒是不難,后面自己直接套用就行,代碼如下:
- from pyecharts.charts import Map, Timeline
- from pyecharts import options as opts
- # 1. 準(zhǔn)數(shù)據(jù)
- shanxi_city = ["西安市", "延安市", "咸陽市", "渭南市", "安康市", "漢中市", "寶雞市", "銅川市", "商洛市", "榆林市", "韓城市", "楊凌示范區(qū)"]
- 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. 繪制現(xiàn)有疫情地圖:格式二
- map2 = (
- Map()
- .add('現(xiàn)有病例', [(i, j) for i, j in zip(shanxi_city, xianyou)], '陜西')
- .set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=1750, is_piecewise=True))
- )
- # 4. 繪制累計(jì)疫情地圖:格式三
- map3 = (
- Map()
- .add('累計(jì)病例', [(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. 創(chuàng)建組合類對象
- timeline = Timeline(init_opts=opts.InitOpts(width='720px', height='350px'))
- # 8. 在組合對象中添加需要組合的圖表對象
- timeline.add(chart=map1, time_point="陜西省新增病例疫情圖")
- timeline.add(chart=map2, time_point="陜西省現(xiàn)有病例疫情圖")
- timeline.add(chart=map3, time_point="陜西省累計(jì)病例疫情圖")
- timeline.add(chart=map4, time_point="陜西省治愈病例疫情圖")
- timeline.add(chart=map5, time_point="陜西省死亡病例疫情圖")
- timeline.add_schema(is_auto_play=True, play_interval=2000)
- # 9. 渲染數(shù)據(jù)
- timeline.render('陜西省疫情輪播圖.html')
實(shí)現(xiàn)的效果圖如下:
實(shí)際上它是動態(tài)的,我這里沒有轉(zhuǎn)gif格式,看上去有點(diǎn)干巴,問題不大。
總結(jié)
大家好,我是Python進(jìn)階者。這篇文章主要基于百度疫情實(shí)時大數(shù)據(jù)報(bào)告數(shù)據(jù),利用了Python中的可視化庫pyecharts給大家分享了省位地圖的制作和輪播圖的制作方法。