利用Python制作動(dòng)態(tài)排名圖的實(shí)現(xiàn)代碼
大家好,今天我們要講的是如何使用 Pyecharts 制作動(dòng)態(tài)排名變化圖:point_down:
制作這樣的一個(gè)動(dòng)態(tài)圖使用到的是 Pyecharts中的TimeLine(時(shí)間線輪播圖) ,代碼實(shí)現(xiàn)起來(lái)其實(shí)稍有難度,但我希望能 通過(guò)講解這樣一張動(dòng)態(tài)圖的制作過(guò)程,來(lái)讓各位讀者可以使用Pyecharts將任何一種圖動(dòng)起來(lái) ,我們開(kāi)始吧!
首先我們需要思考一下這樣一種 動(dòng)態(tài)圖的生成邏輯 ,不就是把每天的數(shù)據(jù)制作成一張條形圖然后輪動(dòng)嗎,OK那我們的 數(shù)據(jù)要整理成啥樣 呢? 一個(gè)dataframe,每列是一個(gè)國(guó)家近20天的數(shù)據(jù),還有一個(gè)存儲(chǔ)20天時(shí)間的list:point_down:
搞定數(shù)據(jù)之后我們?nèi)yecharts官方示例網(wǎng)站找到一個(gè)類似的圖
http://gallery.pyecharts.org/#/Timeline/timeline_bar_with_graphic
官網(wǎng)示例代碼和效果都給你了,我們要做的就是 將這段代碼改成我們需要的形式 ,現(xiàn)在我們將這段代碼復(fù)制到Notebook中,并修改將圖 顯示在notebook中
接下來(lái)我們 觀察這段代碼與圖 ,首先要改的是,把他 每次兩組變量改為一組變量,然后刪掉和修改一些不需要的文字 :point_down
:
上圖左邊是修改前的代碼,右邊是代碼修改的部分,就不用多做解釋了,直接看圖,現(xiàn)在我們的圖就成了這樣:point_down
:
是不是有點(diǎn)意思了,接下來(lái)也是稍微有一點(diǎn)難度的部分就是 修改坐標(biāo)軸和對(duì)應(yīng)的數(shù)據(jù) ,這時(shí)我們先觀察下這段代碼 如何控制坐標(biāo)軸和數(shù)據(jù)
可以看到x軸調(diào)用了 Faker.choose()
,y軸調(diào)用了 Faker.values()
打印我們單獨(dú)調(diào)用一下出來(lái)看看
你看這倆方法每次 返回一個(gè)list ,并且這個(gè) list是變化 的,并且要注意到他的 X寫(xiě)在循環(huán)外 ,所以x軸一直沒(méi)有變,但 y軸的值寫(xiě)在了循環(huán)里面 ,通過(guò)這樣的方式來(lái)讓每次生成的圖數(shù)據(jù)不一樣。
所以我們接下來(lái)的目的就很明確了,因?yàn)槲覀兊?條形圖是有順序 的所以我們需要寫(xiě)兩個(gè)函數(shù),在生成每一張圖的時(shí)候,返回一組x軸數(shù)據(jù),一組y軸數(shù)據(jù),并且是按照順序排列的,所以可以這么寫(xiě):point_down
:
稍微解釋一下修改的地方, get_value() 函數(shù)就是 將df1傳進(jìn)去,再把每一行的數(shù)據(jù)傳出來(lái) ,k是用來(lái)識(shí)別 調(diào)用次數(shù) 的,這樣可以保證每次調(diào)用下一行的數(shù)據(jù)。接著在循環(huán)里面,將我們傳出來(lái)的確診數(shù)量和國(guó)家名使用Pandas進(jìn)行排序并返回兩個(gè)list,此時(shí)這 兩個(gè)list一一對(duì)應(yīng)并且確診數(shù)量是降序排列 。
此時(shí)我們的需求就實(shí)現(xiàn)了,用這個(gè)X,Y替換掉源代碼的X,Y即可
其實(shí)到這里,就已經(jīng)結(jié)束了,點(diǎn)擊播放就可以實(shí)現(xiàn)輪動(dòng)了,但接下來(lái)可以稍微修改部分代碼來(lái)調(diào)整細(xì)節(jié)
上面這兩處修改就是調(diào)整了每張圖的切換時(shí)間,自動(dòng)播放和反轉(zhuǎn)XY軸,此時(shí)就大功告成,你的條形圖就成功的動(dòng)起來(lái):point_down
:
以上就是從0到1制作動(dòng)態(tài)條形圖的過(guò)程,感興趣的一定要敲一遍代碼。注意本文用柱狀圖示例,但是 不管條形圖還是餅圖還是折線圖甚至地圖,體現(xiàn)到代碼不就是Bar還是Line嗎 ,想制作不同的動(dòng)態(tài)圖不就是 修改一行代碼 的事嗎。我們?cè)倩仡櫼幌聞倓偟牟襟E:思考想要做的圖——>從官網(wǎng)找個(gè)demo——>觀察代碼——>修改部分代碼——>搞定!學(xué)會(huì)了嗎?
注:本文使用的數(shù)據(jù)與代碼,點(diǎn)擊閱讀原文即可獲取(使用電腦端才可以正常下載),當(dāng)然鼓勵(lì)自己嘗試一點(diǎn)一點(diǎn)寫(xiě)~
總結(jié)
到此這篇關(guān)于利用Python制作動(dòng)態(tài)排名圖的文章就介紹到這了,更多相關(guān)Python動(dòng)態(tài)排名圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
30分鐘搭建Python的Flask框架并在上面編寫(xiě)第一個(gè)應(yīng)用
這篇文章主要介紹了如何搭建Python的Flask框架并在上面編寫(xiě)一個(gè)簡(jiǎn)單的登錄模版應(yīng)用,代碼數(shù)量少、充分體現(xiàn)了Flask框架的輕量與開(kāi)發(fā)高效的特點(diǎn),需要的朋友可以參考下2015-03-03用python求一個(gè)數(shù)組的和與平均值的實(shí)現(xiàn)方法
今天小編就為大家分享一篇用python求一個(gè)數(shù)組的和與平均值的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Python實(shí)現(xiàn)打印詳細(xì)報(bào)錯(cuò)日志,獲取報(bào)錯(cuò)信息位置行數(shù)
這篇文章主要介紹了Python實(shí)現(xiàn)打印詳細(xì)報(bào)錯(cuò)日志,獲取報(bào)錯(cuò)信息位置行數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08淺談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作
下面小編就為大家?guī)?lái)一篇淺談Python中用datetime包進(jìn)行對(duì)時(shí)間的一些操作。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06利用Python爬取微博數(shù)據(jù)生成詞云圖片實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于利用Python爬取微博數(shù)據(jù)生成詞云圖片的相關(guān)資料,文中通過(guò)示例代碼介紹非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08Python中json.load()和json.loads()有哪些區(qū)別
json.loads()用于解析一個(gè)有效的JSON字符串并將其轉(zhuǎn)換為Python字典,json.load——()用于從一個(gè)文件讀取JSON類型的數(shù)據(jù),然后轉(zhuǎn)轉(zhuǎn)換成Python字典,本文講解下python中兩者的使用2021-06-06舉例講解Python設(shè)計(jì)模式編程的代理模式與抽象工廠模式
這篇文章主要介紹了Python編程的代理模式與抽象工廠模式,文中舉了兩個(gè)簡(jiǎn)單的小例子來(lái)說(shuō)明這兩種設(shè)計(jì)模式的思路在Python編程中的體現(xiàn),需要的朋友可以參考下2016-01-01Python功能擴(kuò)展Xorbits庫(kù)編程的無(wú)限可能性探索
Xorbits是一個(gè)Python庫(kù),旨在擴(kuò)展Python語(yǔ)言的功能,使開(kāi)發(fā)者能夠更加輕松地進(jìn)行創(chuàng)新性編程,該庫(kù)提供了各種工具和功能,本文就來(lái)帶大家探索python編程的無(wú)限可能性2024-01-01詳解Python如何檢查一個(gè)數(shù)字是否為科技數(shù)
科技數(shù)(Tech?Number)是一種在數(shù)學(xué)上具有一定特殊性質(zhì)的數(shù)字,這篇文章主要為大家詳細(xì)介紹了如何使用Python檢查一個(gè)數(shù)字是否為科技數(shù),感興趣的可以了解下2024-03-03