pyecharts 實(shí)時(shí)更新儀表盤
前言
在前段時(shí)間,小編推出了一篇 pyecharts 可視化儀表盤的制作教程:
但存在幾個(gè)問題,不能實(shí)時(shí)更新數(shù)據(jù),制作的是靜態(tài)的儀表盤,每次生成儀表盤都要調(diào)整代碼,不能一運(yùn)行就直接生成可視化儀表盤。
針對(duì)以上問題,這次小編帶大家制作實(shí)時(shí)更新的可視化儀表盤。
可視化儀表盤一般以 web 形式展現(xiàn)是比較好的,源數(shù)據(jù)存儲(chǔ)在類似 MySQL 的數(shù)據(jù)庫中的,但為了簡化問題,怕讀者安裝 MySQL 就耗費(fèi)大量時(shí)間,及不懂 web,所以數(shù)據(jù)源采用 csv,沒有使用 web。
開門見山?
實(shí)時(shí)更新的可視化儀表盤
數(shù)據(jù)生成
我們假設(shè)目標(biāo)背景是某西餐廳想通過可視化儀表盤實(shí)時(shí)監(jiān)控餐廳的狀況,便于做出相應(yīng)的人力物力等資源配置。
創(chuàng)建一個(gè) data 文件夾專門用來保存數(shù)據(jù),需要寫一個(gè)實(shí)時(shí)更新插入新數(shù)據(jù)的腳本,用來達(dá)到數(shù)據(jù)實(shí)時(shí)更新的效果。
insert.py 為小編創(chuàng)建的腳本,此腳本先創(chuàng)建 3 張表:
food_sale.csv 菜品銷量表,字段:菜品名,單價(jià),銷量(銷量初始值為 0);
people.csv 人數(shù)狀況表,字段:就餐人數(shù),排隊(duì)人數(shù),座位數(shù);
comment.csv 評(píng)論表,字段:評(píng)分,評(píng)論內(nèi)容(評(píng)論內(nèi)容每次從 comment.txt 中隨機(jī)抽取內(nèi)容作為評(píng)論,comment.txt 為小編隨便復(fù)制的評(píng)論)
創(chuàng)建三張表并插入初始數(shù)據(jù):
創(chuàng)建好以后,就開始插入數(shù)據(jù),數(shù)據(jù)是一直插入的,小編設(shè)置的是間隔 1.5 秒插入一次,這里就用死循環(huán)就可以了,這樣腳本就一直在運(yùn)行插入新的數(shù)據(jù)。
先來插入菜品銷量表的銷量,銷量初始為 0,numpy 隨機(jī)生成和菜品數(shù)量一樣長范圍在 0-3 之間的數(shù)組,上一次的銷量加上生成的數(shù)組成為新的銷量,更新數(shù)據(jù):
再來插入人數(shù)狀況表,總座位數(shù)設(shè)置為 50,就餐人數(shù)在 0-100 之間隨機(jī)生成,大于 50,那就餐人數(shù)就為? 50,排隊(duì)人數(shù)就隨機(jī)生成 10-30 之間的整數(shù),如小于 50,排隊(duì)人數(shù)就為 0,插入數(shù)據(jù):
最后評(píng)論表,評(píng)分 1-5 分隨機(jī)生成,評(píng)論從小編準(zhǔn)備好的 txt 里面隨機(jī)抽取,插入數(shù)據(jù):
好,運(yùn)行此腳本就會(huì)在 data 文件夾生成數(shù)據(jù),且腳本一直運(yùn)行,數(shù)據(jù)一直更新。
?可視化儀表盤?
先來看看可視化儀表盤由哪些圖構(gòu)成,實(shí)現(xiàn)的代碼獲取源代碼查看,這些圖表都設(shè)置了 id。
菜品銷量排行條形圖:
銷售額完成情況儀表盤:
就餐人數(shù)占總座位數(shù)的比重的水球圖:
評(píng)分占比玫瑰圖:
評(píng)論詞云:
人數(shù)座位分布:
這些生成代碼全都封裝成函數(shù),創(chuàng)建 page 對(duì)象調(diào)用它們,生成的可視化全部在 page.html 中,布局排版,保存 json文件,不明白的看文章開頭鏈接的文章。
打開 json 文件可以看到有 cid 字段,這就是每張圖表的 id,我們?cè)诓季趾煤螅x中一張圖表,右鍵【檢查】,可以查看它的 id,此 id 在 json 中對(duì)應(yīng)的地方找到,重新設(shè)置 id,假如此時(shí)右鍵后看到的 id 為 123,那在json 中找到 uid 為 123 的值,修改 uid 為1,在代碼中找到此圖的代碼,設(shè)置 chart_id 為 1,依次把所有圖表的都修改:
id 全部修改好后,調(diào)用就可以生成儀表盤了,page.html 為生成的初始可視化圖表,chart_config.json 布局文件,my_charts.html 最終可視化儀表盤。
最后需要實(shí)現(xiàn)實(shí)時(shí)刷新的功能,在最終可視化儀表盤中的 html 文件中添加一行刷新功能 html 代碼即可,最后死循環(huán)讀取,生成,刷新:
最后運(yùn)行先運(yùn)行 insert.py,再運(yùn)行 visual.py,打開 my_charts.html 就可以看到每隔 3 秒自動(dòng)刷新一次,就如“開門見山”所示。
?源碼獲取
關(guān)注微信公眾號(hào) “木下學(xué)Python”,回復(fù) “pyecharts實(shí)時(shí)更新” 即可獲取
END
讀者交流群已建立,找到我備注 “交流”,即可獲得加入我們~
聽說點(diǎn) “在看” 的都變得更好看吶~
關(guān)注關(guān)注小編唄~小編給你分享爬蟲,數(shù)據(jù)分析,可視化的內(nèi)容噢~
掃一掃下方二維碼即可關(guān)注我噢~
-END-

















