1. 程式人生 > 程式設計 >python實現Pyecharts實現動態地圖(Map、Geo)

python實現Pyecharts實現動態地圖(Map、Geo)

一些經常畫圖的開發人員大概都用過echart,不過小白用Python比較多,學習了python下的Pyecharts,發現這個包真的很強大。下面是小白對動態地圖的實踐案例:

假如有這樣一組資料,全國每個城市的酒店數(虛擬),那麼如何在地圖上展示呢?

1.Python需要安裝Pycharts

當安裝完成後需要新增地圖包:

安裝pyecharts後還需要根據需要安裝城市、省份等地圖包,下面是對包的整理,大家可以根據需要下載。

pip install pyecharts
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg

2.安裝完成後,畫圖

from pyecharts import Bar
from pyecharts import Map,Geo
import pandas as pd 
#讀取資料
inpath = 'D:/Users/traindatas/map_2.csv' #資料路徑
data = pd.read_csv(inpath,header = 'infer') #讀取資料
 
#瀏覽資料
data.head()

資料展示如下:這裡是展示2019年1到九月每個月,城市酒店數的變化情況,每個月用1號代表當月

python實現Pyecharts實現動態地圖(Map、Geo)

由於每個城市包含9條資料,因此,就需要用迴圈做出9張MAP地圖,來展示每個月每個城市的情況

#取出日期
IsDuplicated = data['effectdate'] 
list_of_month = list(IsDuplicated.drop_duplicates())
 
#迴圈,做出每個月的分佈圖
for month in list_of_month:
 # 城市酒店數
 df = data[data['effectdate'] == month]
 indexs = list(df['cityname'])
 values = list(df['masterhotelid'])
 
 geo = Geo("全國酒店分佈",str(month) + "全國酒店分佈",title_color="#fff",title_pos="center",width=1200,height=600,background_color='#404a59')
 
 # type="effectScatter",is_random=True,effect_scale=5 使點具有發散性
 geo.add("全國酒店分佈",indexs,values,type="effectScatter",effect_scale=5,visual_range=[0,900],visual_text_color="#fff",symbol_size=15,is_visualmap=True,is_roam=False)
 
 
 #geo.show_config()
 filepath = 'D:/Users/pythonfeature/map/' +str(month) + '_month.html'
 geo.render(path=filepath)

這樣就在指定的資料夾下生成了9張圖,我們隨意開啟一張圖:在本地圖片中,圖中的點是動態的,但是小白不知道html型別的圖片如何上傳,所以就上傳了一個下載的PNG圖片,大家可以自行嘗試之後觀看動圖

下圖就是上面程式碼生成的9張圖,檔案型別是HTML型別

python實現Pyecharts實現動態地圖(Map、Geo)

開啟其中一張圖看下~

python實現Pyecharts實現動態地圖(Map、Geo)

當然Pyecharts中的圖形還是很豐富的,之後小白再分享一些其他的圖形

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。