python 3d绘图_Python制作炫酷的个人3D动态足迹图

  • Post author:
  • Post category:python


点击上方【牵引小哥讲Python】,关注回复【资源】领取学习资源!

以下内容来源:python数据分析之禅

作者:作者小dull鸟


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

640?wx_fmt=gif

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




一、准备足迹城市数据



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

95416fafbf7aeaec0633e39a91532062.png

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

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

返回数据如下:

0c755dcd0ec001826f6d2503aaf5be19.png

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

c9c1539ea636e6761b5fda21f31fb305.png

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

1764eac39b7c9833566ec5778599368f.png



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

完整代码请扫码关注公众号并回复

足迹图

获取

5b12ab796b179de78577091434a33e2b.png

46c0f5af62a133803de9cc6a6baf888d.png

8b7bbb2ad75d235c211947a229028d1e.png
精彩推荐牵引小哥教你学Python数据可视化Python和Anaconda的安装方法Spyder基本操作和使用技巧绘图要素——颜色、线型、标记图形认识并使用Matplotlib快速绘图更多精彩原创内容!
693c16b5cf2396cfe368371aec0385ab.png



关注我,一起学Python!