鄙人之前搞了一个山东省的大数据比赛,在决赛前夕为了更好地展示就使用了pyecharts实现动态可视化的方法。可视化效果如下视频:
这里需要用到pyecharts里面的BMap()函数,关于BMap()函数的使用方法可以参考以下链接: pyecharts使用百度地图BMap时显示自定义位置的散点图 基于pyecharts Geo BMAP 的地图可视化
详细代码如下:
from pyecharts import options as opts
from pyecharts.charts import BMap,Geo
from pyecharts.faker import Faker
from pyecharts.commons.utils import JsCode
import numpy as np
from pyecharts.charts import Geo, Timeline
df = pd.read_excel('D:\\德州赛决赛\\B\\各卡口各时刻排放量:单位克.xlsx')
sj=list(set(list(df.SJ)))
sj=sorted(sj)
timeline = Timeline(init_opts=opts.InitOpts(width='1600px', height='900px'))
from pyecharts.globals import GeoType
for i in range(len(sj)):
g=BMap()
g.add_schema(baidu_ak="sxWNz6lzlr5DVP5eDEe0NWjixvbt7GuQ",
center=[116.3852, 37.453388],
zoom=15,
is_roam=True
)
data2=df[df.SJ==sj[i]]
data2=data2.sort_values(by='SL',ascending=False)
kakou=list(data2['SBID'])
liuliang=list(data2['SL'])
jd=list(data2['LNG'])
wd=list(data2['LAT'])
datapairs=[]
for j in range(len(kakou)):
g.add_coordinate(kakou[j],jd[j],wd[j])
datapairs.append((kakou[j],liuliang[j]))
g.add(
"bmap",
[list(z) for z in zip(kakou, liuliang)],
type_="effectScatter",
label_opts=opts.LabelOpts(formatter="{b}", position="right", is_show=False),
itemstyle_opts=opts.ItemStyleOpts(color="purple"),
)
pieces = [
{'max': 100, 'label': '100以下', 'color': '#50A3BA'},
{'min': 100, 'max': 200, 'label': '100-200', 'color': '#3700A4'},
{'min': 200, 'max': 300, 'label': '200-300', 'color': '#81AE9F'},
{'min': 300, 'max': 500, 'label': '300-500', 'color': '#E2C568'},
{'min': 500, 'max': 1000, 'label': '500-1000', 'color': '#FCF84D'},
{'min': 1000, 'max': 1500, 'label': '1000-1500', 'color': '#DD0200'},
{'min': 1500, 'max': 2000, 'label': '1500-2000', 'color': '#DD675E'},
{'min': 2000, 'label': '2000以上', 'color': '#D94E5D'}
]
g.add('', datapairs, type_=GeoType.EFFECT_SCATTER, symbol_size=2)
g.set_global_opts(visualmap_opts=opts.VisualMapOpts(is_piecewise=True, pieces=pieces),title_opts=opts.TitleOpts(title="德州市各卡口机动车流量"))
g.set_series_opts(label_opts=opts.LabelOpts(is_show=False,formatter='{b}',font_size=10,position="top"))
timeline.add(chart=g,time_point=sj[i])
timeline.add_schema(is_auto_play=True, play_interval=500)
timeline.render("机动车卡口流量动态可视化.html")
想了解更多可参考这一推送链接 这篇推送,只为了填前面的一个坑——关于之前做的几张动态可视化地图
这里面更多内容后续待我更新,上述推送里点击阅读原文即可获取我动态可视化所用的数据哦~
|