pyecharts動態(tài)軌跡圖的實現(xiàn)示例
今天的主題!最近很多朋友問起pyecharts,尤其是地理坐標圖的制作,都說被其圖形之美給吸引到了。剛好今天也有同事問起來,那么今天就以pyecharts的動態(tài)地理軌跡圖為例,說說該怎么使用pyecharts。
import pandas as pd import random from pyecharts import GeoLines, Style #地理軌跡圖的類就是Geolines
在同事那里拿了一份國內(nèi)部分城市的經(jīng)緯度數(shù)據(jù),首先用pandas讀取數(shù)據(jù),看看數(shù)據(jù)長什么樣子,我們發(fā)現(xiàn)數(shù)據(jù)由一列組成,基本結構為'地名':['經(jīng)度','緯度'],那么接下來我們將各地方的地名,經(jīng)度,緯度提取出來。
#讀取數(shù)據(jù)
data = pd.read_excel('./Desktop/data.xlsx',header = None,names = ['name'])
print(data.head())
name
0 '上海': [121.4648,31.2891],
1 '東莞': [113.8953,22.901],
2 '東營': [118.7073,37.5513],
3 '中山': [113.4229,22.478],
4 '臨汾': [111.4783,36.1615],
#寫個遍歷,把各地方的地名,經(jīng)度,緯度提取出來,并存取在DataFrame中
city_list = []
lad_list = []
long_list = []
for i in data['name']:
s = i.strip().split(':') #去除前后空格,并以":"為分隔符分裂字符
city = s[0][1:-1] #取分裂后字符的第一個,得到地名
lad = s[1].split(',')[0][2:] #取分裂后字符的第二個,繼續(xù)以','為分隔符分裂字符
long = s[1].split(',')[1][:-2]
city_list.append(city)
lad_list.append(lad)
long_list.append(long)
result = pd.DataFrame({'地點': city_list, '經(jīng)度': lad_list, '緯度': long_list})
從result數(shù)據(jù)框我們看到,一共由114行,3列數(shù)據(jù)組成,114行太多了,畫到地圖上會很亂,于是我們用random包隨機抽樣20個出來做實驗;
在抽樣之前,我們需要將數(shù)據(jù)整理成geolines要求的格式,格式為[('始點','終點')];
另外因為我們要自定義各城市的經(jīng)緯度(擔心部分城市在地圖顯示不出來),pyecharts里面城市經(jīng)緯度的格式為{'城市':['經(jīng)度','緯度']},因此我們還需要組裝一下我們數(shù)據(jù)。
#以東莞為始點,其他各個城市為終點,整理數(shù)據(jù)
plotting = result[result['地點'] != '東莞']['地點'].apply(lambda x : ('東莞',x))
#自定義各城市的經(jīng)緯度
geo_cities_coords = {result.iloc[i]['地點']:[result.iloc[i]['經(jīng)度'],result.iloc[i]['緯度']] for i in range(len(result))}
#隨機抽樣20個城市組合
plotting_data = random.sample(list(plotting),20)
數(shù)據(jù)已經(jīng)準備好了,接下來就套路來了,先設定畫布的格式,然后將geolines作為類Geolines的實例,接著設置geolines的參數(shù),最后展示成果!
#設置畫布的格式
style = Style(title_pos="center",
width=1000,
height=800)
#部分地理軌跡圖的格式
style_geolines = style.add(is_label_show=True,
line_curve=0.3, #軌跡線的彎曲度,0-1
line_opacity=0.6, #軌跡線的透明度,0-1
geo_effect_symbol='plane', #特效的圖形,有circle,plane,pin等等
geo_effect_symbolsize=10, #特效圖形的大小
geo_effect_color='#7FFFD4', #特效的顏色
geo_effect_traillength=0.1, #特效圖形的拖尾效果,0-1
label_color=['#FFA500', '#FFF68F'],#軌跡線的顏色,標簽點的顏色,
border_color='#97FFFF', #邊界的顏色
geo_normal_color='#36648B', #地圖的顏色
label_formatter='', #標簽格式
legend_pos = 'left')
#作圖
geolines = GeoLines('小文的pyechart出行軌跡圖', **style.init_style)
geolines.add('從東莞出發(fā)',
plotting_data,
maptype='china', #地圖的類型,可以是省的地方,如'廣東',也可以是地市,如'東莞'等等
geo_cities_coords=geo_cities_coords,
**style_geolines)
#發(fā)布,得到圖形的html文件
geolines.render()

做到這里地理軌跡圖已經(jīng)完成了,那么假如我們想畫一個既有出發(fā)又有回來的軌跡圖怎么畫呢?其實很簡單,就在上面的基礎上,再增加一個add就可以了,如下:
geolines.add('回到東莞',
[('海口','東莞'),('拉薩','東莞'),('貴州','東莞'),('蘭州','東莞')],
maptype='china',
geo_cities_coords=geo_cities_coords,
**style_geolines)

好了,我們看到了有幾架小飛機回到東莞了,分別是我們設置的拉薩,貴州,??诤吞m州,這樣看似乎有點亂,那么我們可以設置一個參數(shù),使得出發(fā)和回程分開,先設置is_legend_show = True,再設legend_selectdmode = 'single',點擊不同的圖例就可以顯示了,如下:
style_geolines = style.add(is_label_show=True,
line_curve=0.3,
line_opacity=0.6,
geo_effect_symbol='plane',
geo_effect_symbolsize=10,
geo_effect_color='#7FFFD4',
geo_effect_traillength=0.1,
label_color=['#FFA500', '#FFF68F'],
border_color='#97FFFF',
geo_normal_color='#36648B',
label_formatter="",
is_legend_show=True,
legend_pos = 'left',
legend_selectdmode = 'single') #單例模式
geolines.add('從東莞出發(fā)', #圖例1名稱
plotting_data,
maptype='china',
geo_cities_coords=geo_cities_coords,
**style_geolines)
geolines.add('回到東莞', #圖例2名稱
[('???,'東莞'),('拉薩','東莞'),('貴州','東莞'),('蘭州','東莞')],
maptype='china',
geo_cities_coords=geo_cities_coords,
**style_geolines)

到此這篇關于pyecharts動態(tài)軌跡圖的實現(xiàn)示例的文章就介紹到這了,更多相關pyecharts動態(tài)軌跡圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 安裝pyecharts1.8.0版本后導入pyecharts模塊繪圖時報錯: “所有圖表類型將在 v1.9.0 版本開始強制使用 ChartItem 進行數(shù)據(jù)項配置 ”的解決方法
- 基于Python pyecharts實現(xiàn)多種圖例代碼解析
- python pyecharts 實現(xiàn)一個文件繪制多張圖
- 利用pyecharts讀取csv并進行數(shù)據(jù)統(tǒng)計可視化的實現(xiàn)
- python實現(xiàn)Pyecharts實現(xiàn)動態(tài)地圖(Map、Geo)
- Pyecharts 動態(tài)地圖 geo()和map()的安裝與用法詳解
- python使用pyecharts庫畫地圖數(shù)據(jù)可視化的實現(xiàn)
- Python中pyecharts安裝及安裝失敗的解決方法
- 通過Python pyecharts輸出保存圖片代碼實例
相關文章
Python使用SQLAlchemy模塊實現(xiàn)操作數(shù)據(jù)庫
SQLAlchemy 是用Python編程語言開發(fā)的一個開源項目,它提供了SQL工具包和ORM對象關系映射工具,使用SQLAlchemy可以實現(xiàn)高效和高性能的數(shù)據(jù)庫訪問,下面我們就來學習一下SQLAlchemy模塊的具體應用吧2023-11-11
使用Python實現(xiàn)簡單的學生成績管理系統(tǒng)
這篇文章主要為大家詳細介紹了Python實現(xiàn)學生成績管理系統(tǒng),使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設計概述
這篇文章主要介紹了Python企業(yè)編碼生成系統(tǒng)總體系統(tǒng)設計,簡單描述了Python企業(yè)編碼生成系統(tǒng)的功能、結構與相關編碼實現(xiàn)技巧,需要的朋友可以參考下2019-07-07

