我们可以在CSDN上可以看到各种各样的地图可视化方法,那么问题来了:如何采用Python实现动态的地图可视化呢,本文姑且使用pyecharts给大家提供一下思路。
首先, 我们需要先收集一些行政区相关的数据信息,以德州市市辖区为例。 随后我们可在Python中写入程序,程序如下:
from pyecharts import options as opts
from pyecharts.charts import Map, Timeline
from pyecharts.faker import Faker
import os
import pandas as pd
df=pd.read_excel('各行政区24小时数据1.xlsx')
quxian=df.columns[1:]
flow=[]
sj=list(df['时间'])
for i in range(len(sj)):
flow.append([])
for j in range(len(quxian)):
flow[i].append(int(list(df[quxian[j]])[i])/200)
timeline = Timeline(init_opts=opts.InitOpts(width='720px', height='350px'))
for m in range(len(sj)):
map=(Map().add("德州", [list(z) for z in zip(quxian, flow[m])], "德州").set_global_opts(title_opts=opts.TitleOpts(title="德州地图"), visualmap_opts=opts.VisualMapOpts()))
timeline.add(chart=map,time_point=sj[m])
timeline.add_schema(is_auto_play=True, play_interval=500)
timeline.render()
os.system("render.html")
把程序分解开来说,就是首先导入数据。并按照和行政区划顺序生成二维列表
df=pd.read_excel('各行政区24小时数据1.xlsx')
quxian=df.columns[1:]
flow=[]
sj=list(df['时间'])
for i in range(len(sj)):
flow.append([])
for j in range(len(quxian)):
flow[i].append(int(list(df[quxian[j]])[i])/200)
随后建立时间轴,并在不同的时间节点生成相应的地图
timeline = Timeline(init_opts=opts.InitOpts(width='720px', height='350px'))
for m in range(len(sj)):
map=(Map().add("德州", [list(z) for z in zip(quxian, flow[m])], "德州").set_global_opts(title_opts=opts.TitleOpts(title="德州地图"), visualmap_opts=opts.VisualMapOpts()))
timeline.add(chart=map,time_point=sj[m])
最后,设置播放方式,生成网页
timeline.add_schema(is_auto_play=True, play_interval=500)
timeline.render()
os.system("render.html")
这样,我们就搭建好了一个动态轮播地图
|