Python資料視覺化:3D動態圖,讓你的足跡實現在地圖上
阿新 • • 發佈:2020-09-14
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理。
以下文章來源於python資料分析之禪 ,作者小dull鳥
今天給大家帶來一篇3D個人足跡圖製作教程,先看看成果圖:
下面給大家詳細介紹一下製作步驟:
一、準備足跡城市資料
因為本次用pyecharts畫3D足跡圖的資料介面是列表形式:
所以我們要把城市的經緯度資訊找出來,如果城市比較少可以手動搜尋填寫,如果城市比較多的話可以做個小爬蟲程式,這裡給大家推薦1個數據介面
https://apis.map.qq.com/jsapi?qt=geoc&addr=城市名字&key=UGMBZ-CINWR-DDRW5-W52AK-D3ENK-ZEBRC&output=jsonp&pf=jsapi&ref=jsapi
返回資料如下:
我們可以先把足跡城市放入csv表格中:
import requests import csv import json city_points=[] with open('足跡城市.csv','r') as f: city=csv.reader(f) for i in city: city_point = [] for j in i: url='https://apis.map.qq.com/jsapi?qt=geoc&addr={0}' \ '&key=UGMBZ-CINWR-DDRW5-W52AK-D3ENK-ZEBRC&output=jsonp&pf=jsapi&ref=jsapi'.format(j) response=requests.get(url) text=json.loads(response.text) city_point.append([text['detail']['pointx'],text['detail']['pointy']]) city_points.append(city_point)
可以返回足跡城市的經緯度資料,直接用於該3D足跡圖資料介面
二.畫3D足跡圖
畫足跡圖程式碼如下:
c = ( Map3D() .add_schema( itemstyle_opts=opts.ItemStyleOpts( color="rgb(72,61,139)", #地圖背景顏色 opacity=100, #圖形透明度 border_width=0.8, #邊界寬度 border_color="rgb(80,100,0,0)",#邊界顏色 ), map3d_label=opts.Map3DLabelOpts( is_show=True, #顯示各省名字 text_style=opts.TextStyleOpts( color=" #DC143C", font_size=9, background_color="rgba(75,0,130,0)" ), ), light_opts=opts.Map3DLightOpts( main_color="#fff", #主光源的顏色 main_intensity=1.2, #主光源的強度 is_main_shadow=True, #是否投射陰影 main_alpha=55, #主光源上下旋轉角度 main_beta=10, #主光源左右旋轉角度 ambient_intensity=0.3, #環境光的強度 ), ) .add( series_name="", data_pair=city_data, #足跡城市經緯度資料 type_=ChartType.LINES3D, #地圖型別 effect=opts.Lines3DEffectOpts( #軌跡特效設定 is_show=True, period=8, #尾跡特效的週期 trail_width=8, #尾跡特效的寬度 trail_length=1, #尾跡特效的長度 trail_color="#DC143C", #尾跡特效的顏色 trail_opacity=1, #尾跡特效的不透明度 constant_speed=8 ), linestyle_opts=opts.LineStyleOpts(is_show=True, color="#3CB371", opacity=0.5), #軌跡特效實線設定,設定透明度opacity為0.5 ) .set_global_opts(title_opts=opts.TitleOpts(title="3D足跡城市圖")) ) c.render_notebook()
根據讀者朋友要求,我把畫圖過程中的註釋都加上了,方便理解,大家可以根據自己的愛好調整圖形效果。