1. 程式人生 > 實用技巧 >Python資料視覺化:3D動態圖,讓你的足跡實現在地圖上

Python資料視覺化:3D動態圖,讓你的足跡實現在地圖上

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理。

以下文章來源於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()

根據讀者朋友要求,我把畫圖過程中的註釋都加上了,方便理解,大家可以根據自己的愛好調整圖形效果。