pyecharts 實時更新儀表盤
Python實戰(zhàn)社群
Java實戰(zhàn)社群
長按識別下方二維碼,按需求添加
掃碼關(guān)注添加客服
進Python社群▲
掃碼關(guān)注添加客服
進Java社群▲
開門見山
實時更新的可視化儀表盤
數(shù)據(jù)生成
我們假設(shè)目標背景是某西餐廳想通過可視化儀表盤實時監(jiān)控餐廳的狀況,便于做出相應(yīng)的人力物力等資源配置。
創(chuàng)建一個 data 文件夾專門用來保存數(shù)據(jù),需要寫一個實時更新插入新數(shù)據(jù)的腳本,用來達到數(shù)據(jù)實時更新的效果。
insert.py 為小編創(chuàng)建的腳本,此腳本先創(chuàng)建 3 張表:
food_sale.csv 菜品銷量表,字段:菜品名,單價,銷量(銷量初始值為 0);
people.csv 人數(shù)狀況表,字段:就餐人數(shù),排隊人數(shù),座位數(shù);
comment.csv 評論表,字段:評分,評論內(nèi)容(評論內(nèi)容每次從 comment.txt 中隨機抽取內(nèi)容作為評論,comment.txt 為小編隨便復(fù)制的評論)
創(chuàng)建三張表并插入初始數(shù)據(jù):
創(chuàng)建好以后,就開始插入數(shù)據(jù),數(shù)據(jù)是一直插入的,小編設(shè)置的是間隔 1.5 秒插入一次,這里就用死循環(huán)就可以了,這樣腳本就一直在運行插入新的數(shù)據(jù)。
先來插入菜品銷量表的銷量,銷量初始為 0,numpy 隨機生成和菜品數(shù)量一樣長范圍在 0-3 之間的數(shù)組,上一次的銷量加上生成的數(shù)組成為新的銷量,更新數(shù)據(jù):
再來插入人數(shù)狀況表,總座位數(shù)設(shè)置為 50,就餐人數(shù)在 0-100 之間隨機生成,大于 50,那就餐人數(shù)就為 50,排隊人數(shù)就隨機生成 10-30 之間的整數(shù),如小于 50,排隊人數(shù)就為 0,插入數(shù)據(jù):
最后評論表,評分 1-5 分隨機生成,評論從小編準備好的 txt 里面隨機抽取,插入數(shù)據(jù):
好,運行此腳本就會在 data 文件夾生成數(shù)據(jù),且腳本一直運行,數(shù)據(jù)一直更新。
可視化儀表盤
先來看看可視化儀表盤由哪些圖構(gòu)成,實現(xiàn)的代碼獲取源代碼查看,這些圖表都設(shè)置了 id。
菜品銷量排行條形圖:
銷售額完成情況儀表盤:
就餐人數(shù)占總座位數(shù)的比重的水球圖:
評分占比玫瑰圖:
評論詞云:
人數(shù)座位分布:
這些生成代碼全都封裝成函數(shù),創(chuàng)建 page 對象調(diào)用它們,生成的可視化全部在 page.html 中,布局排版,保存 json文件,不明白的看文章開頭鏈接的文章。
打開 json 文件可以看到有 cid 字段,這就是每張圖表的 id,我們在布局好后,選中一張圖表,右鍵【檢查】,可以查看它的 id,此 id 在 json 中對應(yīng)的地方找到,重新設(shè)置 id,假如此時右鍵后看到的 id 為 123,那在json 中找到 uid 為 123 的值,修改 uid 為1,在代碼中找到此圖的代碼,設(shè)置 chart_id 為 1,依次把所有圖表的都修改:
id 全部修改好后,調(diào)用就可以生成儀表盤了,page.html 為生成的初始可視化圖表,chart_config.json 布局文件,my_charts.html 最終可視化儀表盤。
最后需要實現(xiàn)實時刷新的功能,在最終可視化儀表盤中的 html 文件中添加一行刷新功能 html 代碼即可,最后死循環(huán)讀取,生成,刷新:
最后運行先運行 insert.py,再運行 visual.py,打開 my_charts.html 就可以看到每隔 3 秒自動刷新一次,就如“開門見山”所示。


近期精彩內(nèi)容推薦:
華為正式宣布養(yǎng)豬,網(wǎng)友:支持華為自救!
















