一些經常畫圖的開發人員大概都用過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號代表當月
由於每個城市包含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", is_random=True, 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類型
打開其中一張圖看下~
當然Pyecharts中的圖形還是很豐富的,之後小白再分享一些其他的圖形
最後給大家推薦一個口碑不錯的python聚集地【點擊進入】,這裏有很多的老前輩學習技巧,學習心得
,面試技巧,職場經歷等分享,更爲大家精心準備了零基礎入門資料,實戰項目資料,每天都有程序員
定時講解Python技術,分享一些學習的方法和需要留意的小細節