本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理,
以下文章來源于Python干貨鋪子 ,作者:不正經的kimol君
前言
就在今天,我感受到了來自堵車的深深惡意,沒有錯!我今天被堵在路上近乎3個小時,美好的約會就這樣化為泡影了,
我倒還真想看看這路到底能有多堵,于是,我爬取了各城市的擁堵資料,并將它們可視化:
特別說明:由于資料具有實時性,畫圖時已經過了高峰期,于是圖上一片綠油油也并不奇怪,有感興趣的客官,您接著往下看,待我給您慢慢分解,(ps.涉及到爬蟲、pyecharts、flask等)
一、爬取擁堵指數
某度智慧交通提供了各個城市的擁堵指數的資料,我們只需要通過幾行代碼便可輕松抓取:
# 獲取各城市的擁堵指數 url = 'https://jiaotong.baidu.com/trafficindex/city/list' # 介面api res = requests.get(url) data = res.json()
其中,url為獲取資料的介面地址,通過簡單的抓包分析便能知道,而data為回傳后的資料,它包括很多欄位,但是我們只需要提取其中的城市名和擁堵指數即可:
# 提取資料 citys = [i['cityname'] for i in data['data']['list']] # 提取城市 indexs = [float(i['index']) for i in data['data']['list']] # 提取對應的指數
有了資料,接下來我們就可以將其可視化展示出來,
二、資料可視化
利用可視化神器pyecharts庫繪制地圖,并將城市以及對應的擁堵指數表示出來,其安裝如下:
pip install pyecharts
部分版本需要再安裝額外的地圖庫,方法如下:
pip install echarts-countries-pypkg pip install echarts-cities-pypkg pip install echarts-china-provinces-pypkg pip install echarts-china-cities-pypkg
首先定義地圖:
geo = Geo() geo.add_schema(maptype = 'china') # 加入中國地圖
添加資料并進行相關設定:
geo.add('各城市擁堵指數', zip(citys,indexs), type_ = 'effectScatter') # 設定地圖型別及資料 geo.set_series_opts(label_opts = opts.LabelOpts(is_show = False)) #設定是否顯示標簽
根據擁堵指數的大小進行分類,分別為暢通、緩行、擁堵、嚴重擁堵:
geo.set_global_opts(visualmap_opts = opts.VisualMapOpts( #max_ = 2.5, # 用于連續表示 is_piecewise = True, # 是否分段 pieces = [{'min':1.0,'max':1.5,'label':'暢通','color':'#16CE95'}, {'min':1.5,'max':1.8,'label':'緩行','color':'#F79D06'}, {'min':1.8,'max':2.0,'label':'擁堵','color':'#D80304'}, {'min':2.0,'max':2.5,'label':'嚴重擁堵','color':'#8F0921'}])) # 設定圖例顯示
最后將地圖保存在本地:
geo.render(path='各城市擁堵指數.html')
到這里,我們就得到了文章一開始看到的那張圖~
然而,由于擁堵資料是實時變化的,如果我每次都要去運行一次代碼豈不是很麻煩?
很顯然,機智的社會主義青年是不會這么做的,您接著往下看,
三、搭建展示網站
為了更加方便地將各城市擁堵情況展示出來,我決定搭建一個用于展示的網站,
代碼中,get_geo()為獲取地圖的函式,回傳了pyecharts繪制的地圖,在當前目錄下創建templates檔案夾,并創建模塊檔案geo.html,如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>各城市交通擁堵指數</title>
</head>
<body>
{{mygeo|safe}}
</body>
</html>
至此,訪問網站地址即可看到繪制的擁堵情況地圖~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232307.html
標籤:Python
下一篇:Linux 常用指令
