欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python数据可视化:3D动态图,让你的足迹实现在地图上

程序员文章站 2022-07-12 23:27:15
...

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

以下文章来源于python数据分析之禅 ,作者小dull鸟

Python数据可视化:3D动态图,让你的足迹实现在地图上

 

今天给大家带来一篇3D个人足迹图制作教程,先看看成果图:

Python数据可视化:3D动态图,让你的足迹实现在地图上

 

下面给大家详细介绍一下制作步骤:

Python数据可视化:3D动态图,让你的足迹实现在地图上

 

一、准备足迹城市数据

因为本次用pyecharts画3D足迹图的数据接口是列表形式:

Python数据可视化:3D动态图,让你的足迹实现在地图上

 

所以我们要把城市的经纬度信息找出来,如果城市比较少可以手动搜索填写,如果城市比较多的话可以做个小爬虫程序,这里给大家推荐1个数据接口

https://apis.map.qq.com/jsapi?qt=geoc&addr=城市名字&key=UGMBZ-CINWR-DDRW5-W52AK-D3ENK-ZEBRC&output=jsonp&pf=jsapi&ref=jsapi

返回数据如下:

Python数据可视化:3D动态图,让你的足迹实现在地图上

 

我们可以先把足迹城市放入csv表格中:

Python数据可视化:3D动态图,让你的足迹实现在地图上

 

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()

根据读者朋友要求,我把画图过程中的注释都加上了,方便理解,大家可以根据自己的爱好调整图形效果。