folium,确诊和密接轨迹上图

该代码读取CSV数据,使用folium库创建地图并按日期和类别(确诊者住址、确诊者轨迹)标记不同颜色的点,展示特定日期的疫情分布情况。地图覆盖了从0329到0507的日期,红色点代表确诊者住址,橙色点代表确诊者轨迹。
# coding=utf-8

import csv

import numpy as np
import folium
from folium import plugins
import csv
import requests
import json
import pandas as pd
import re
import time

import webbrowser




def PlotLineOnMap():
    Lat = []
    Lon = []
    Category = []
    Date_time = []
    print(type(Lat))
    fn = 'result.csv'
    with open(fn) as csvFile:
        csvDictReader = csv.DictReader(csvFile)
        for row in csvDictReader:
            print(row['lon'], row['lat'])
            Lat.insert(0,float(row['lat']))
            Lon.insert(0,float(row['lon']))
            Category.insert(0,str(row['category']))
            Date_time.insert(0,str(row['date_time']))
            print(Lat)


    # 给出的坐标系为GCJ-02,如果需要测试google地图,需要进行坐标转换

    tri = np.array(list(zip(Lat, Lon,Category,Date_time)))

    san_map = folium.Map(
        location=[36.641254, 117.068689],
        zoom_start=16,
        # 高德街道图
        tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
        # tiles='http://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', # 高德卫星图
        attr='default')

    layer_0329 = folium.FeatureGroup(name="0329")
    layer_0330 = folium.FeatureGroup(name="0330")
    layer_0331 = folium.FeatureGroup(name="0331")
    layer_0401 = folium.FeatureGroup(name="0401")
    layer_0402 = folium.FeatureGroup(name="0402")
    layer_0403 = folium.FeatureGroup(name="0403")
    layer_0404 = folium.FeatureGroup(name="0404")
    layer_0405 = folium.FeatureGroup(name="0405")
    layer_0406 = folium.FeatureGroup(name="0406")
    layer_0407 = folium.FeatureGroup(name="0407")
    layer_0408 = folium.FeatureGroup(name="0408")
    layer_0409 = folium.FeatureGroup(name="0409")
    layer_0410 = folium.FeatureGroup(name="0410")
    layer_0411 = folium.FeatureGroup(name="0411")
    layer_0412 = folium.FeatureGroup(name="0412")
    layer_0413 = folium.FeatureGroup(name="0413")
    layer_0414 = folium.FeatureGroup(name="0414")
    layer_0415 = folium.FeatureGroup(name="0415")
    layer_0416 = folium.FeatureGroup(name="0416")
    layer_0417 = folium.FeatureGroup(name="0417")
    layer_0418 = folium.FeatureGroup(name="0418")
    layer_0419 = folium.FeatureGroup(name="0419")
    layer_0420 = folium.FeatureGroup(name="0420")
    layer_0421 = folium.FeatureGroup(name="0421")
    layer_0422 = folium.FeatureGroup(name="0422")
    layer_0423 = folium.FeatureGroup(name="0423")
    layer_0424 = folium.FeatureGroup(name="0424")
    layer_0425 = folium.FeatureGroup(name="0425")
    layer_0426 = folium.FeatureGroup(name="0426")
    layer_0427 = folium.FeatureGroup(name="0427")
    layer_0428 = folium.FeatureGroup(name="0428")
    layer_0429 = folium.FeatureGroup(name="0429")
    layer_0430 = folium.FeatureGroup(name="0430")
    layer_0501 = folium.FeatureGroup(name="0501")
    layer_0502 = folium.FeatureGroup(name="0502")
    layer_0503 = folium.FeatureGroup(name="0503")
    layer_0504 = folium.FeatureGroup(name="0504")
    layer_0505 = folium.FeatureGroup(name="0505")
    layer_0506 = folium.FeatureGroup(name="0506")
    layer_0507 = folium.FeatureGroup(name="0507")

    #folium.PolyLine(tri, color='#3388ff').add_to(san_map)
  #  marker_cluster = plugins.MarkerCluster().add_to(san_map)
    for lat, lon,category,date_time in zip(Lat, Lon,Category,Date_time):
        print([category])
        print(type(category))
        print(category)
        print([date_time])


        if( date_time == '0329' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0329)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0329)

        elif( date_time == '0330' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0330)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0330)



        elif (date_time == '0331'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                          icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0331)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                          icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0331)



        elif( date_time == '0401' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0401)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0401)


        elif( date_time == '0402' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0402)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0402)

        elif( date_time == '0403' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0403)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0403)



        elif (date_time == '0404'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                          icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0404)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                          icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0404)



        elif( date_time == '0405' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0405)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0405)


        elif( date_time == '0406' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0406)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0406)

        elif( date_time == '0407' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0407)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0407)

        elif( date_time == '0408' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0408)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0408)



        elif( date_time == '0409' ):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0409)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0409)

        elif (date_time == '0410'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0410)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0410)




        elif (date_time == '0411'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0411)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0411)

        elif (date_time == '0412'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0412)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0412)

        elif (date_time == '0413'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0413)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0413)

        elif (date_time == '0414'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0414)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0414)

        elif (date_time == '0415'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0415)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0415)

        elif (date_time == '0416'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0416)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0416)

        elif (date_time == '0417'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0417)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0417)

        elif (date_time == '0418'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0418)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0418)


        elif (date_time == '0419'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0419)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0419)



        elif (date_time == '0420'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0420)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0420)



        elif (date_time == '0421'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0421)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0421)




        elif (date_time == '0422'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0422)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0422)



        elif (date_time == '0423'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0423)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0423)


        elif (date_time == '0424'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0424)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0424)



        elif (date_time == '0425'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0425)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0425)




        elif (date_time == '0426'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0426)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0426)



        elif (date_time == '0427'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0427)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0427)



        elif (date_time == '0428'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0428)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0428)


        elif (date_time == '0429'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0429)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0429)



        elif (date_time == '0430'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0430)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0430)





        elif (date_time == '0501'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0501)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0501)




        elif (date_time == '0502'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0502)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0502)


        elif (date_time == '0503'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0503)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0503)




        elif (date_time == '0504'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0504)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0504)





        elif (date_time == '0505'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0505)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0505)



        elif (date_time == '0506'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0506)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0506)



        elif (date_time == '0507'):
            if (category == '确诊者住址'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color="red")).add_to(layer_0507)
            elif (category == '确诊者轨迹'):
                folium.Marker(location=[lat, lon], popup=date_time,
                              icon=folium.Icon(icon='cloud', color='orange')).add_to(layer_0507)




















    san_map.add_child(layer_0329)
    san_map.add_child(layer_0330)
    san_map.add_child(layer_0331)
    san_map.add_child(layer_0401)
    san_map.add_child(layer_0402)
    san_map.add_child(layer_0403)
    san_map.add_child(layer_0404)
    san_map.add_child(layer_0405)
    san_map.add_child(layer_0406)
    san_map.add_child(layer_0407)
    san_map.add_child(layer_0408)
    san_map.add_child(layer_0409)
    san_map.add_child(layer_0410)
    san_map.add_child(layer_0411)
    san_map.add_child(layer_0412)
    san_map.add_child(layer_0413)
    san_map.add_child(layer_0414)
    san_map.add_child(layer_0415)
    san_map.add_child(layer_0416)
    san_map.add_child(layer_0417)
    san_map.add_child(layer_0418)
    san_map.add_child(layer_0419)
    san_map.add_child(layer_0420)
    san_map.add_child(layer_0421)
    san_map.add_child(layer_0422)
    san_map.add_child(layer_0423)
    san_map.add_child(layer_0424)
    san_map.add_child(layer_0425)
    san_map.add_child(layer_0426)
    san_map.add_child(layer_0427)
    san_map.add_child(layer_0428)
    san_map.add_child(layer_0429)
    san_map.add_child(layer_0430)
    san_map.add_child(layer_0501)
    san_map.add_child(layer_0502)
    san_map.add_child(layer_0503)
    san_map.add_child(layer_0504)
    san_map.add_child(layer_0505)
    san_map.add_child(layer_0506)
    san_map.add_child(layer_0507)

    san_map.add_child(folium.map.LayerControl())

    san_map.add_child(folium.LatLngPopup())
    san_map.save('test.html')


def main():
    num = 0
    y = []
    '''
    在url里key后面的******换为高德开放平台自己申请的key
    '''
    with open("地址.csv", 'r') as f:  # 写入将要转换的地址的文件路径,此处为默认文件路径(要先将文件提前导入)(注意是csv格式文件)
        r = csv.reader(f, delimiter=',')
        for row in r:
            print(row[0])
            print(row[1])
            url = "http://restapi.amap.com/v3/geocode/geo?key=831894c7f8fe1d2bedb982a040536650&address=" + row[2]
            dat = {
                'count': "1",
            }
            r = requests.post(url, data=json.dumps(dat))
            s = r.json()
            try:
                b = s['geocodes']
                text = str(b)
                print(text)
            except:
                text = 'none'

            # 省份
            try:
                pat1 = "'province': '(.*?)',"
                province = re.compile(pat1).findall(text)[0]
                print("省份:", province)
            except:
                province = 'none'
                print("省份:", province)

            # 城市
            try:
                pat2 = "'city': '(.*?)',"
                city = re.compile(pat2).findall(text)[0]
                print("城市:", city)
            except:
                city = 'none'
                print("城市:", city)

            # 区划
            try:
                pat3 = "'district': '(.*?)',"
                district = re.compile(pat3).findall(text)[0]
                print("区划:", district)
            except:
                district = 'none'
                print("区划:", district)

            # 经纬度
            try:
                pat4 = "'location': '(.*?)',"
                res3 = re.compile(pat4).findall(text)[0]
                # print(res3)
                lon_lat = res3.split(',')
                lon = float(lon_lat[0])
                lat = float(lon_lat[1])
                print("经度:", lon)
                print("纬度:", lat)
            except:
                lon = 'none'
                lat = 'none'
                print("经度:", lon)
                print("纬度:", lat)

            num += 1
            print("第" + str(num) + "条地址转换成功")
            print('**************************************')
            date_time =row[0]
            y.append([num,str(row[0]),row[1],row[2], province, city, district, lon, lat])
            result = pd.DataFrame(y)
            result.columns = ['num', 'date_time','category','address', 'province', 'city', 'district', 'lon', 'lat']
            result.to_csv('result.csv', encoding='gbk', index=False)
        print("全部地址转换成功")

    time.sleep(5)  #暂停10秒
    PlotLineOnMap()

    webbrowser.open('test.html')



if __name__ == '__main__':
    main()
### 如何使用 Folium 绘制带有轨迹的热力图 为了在地图上绘制带有轨迹的热力图,可以利用 `folium` 其插件 `HeatMapWithTime` 来实现这一目标。这允许随着时间的变化显示不同位置的数据热度变化情况。 下面给出一段 Python 代码示例用于创建这样的可视化图表: ```python import folium from folium.plugins import HeatMapWithTime import numpy as np # 假设有一个时间序列的位置数据列表,每个元素都是 (纬度, 经度, 时间戳) data = [ [(37.7749, -122.4194, i), (37.7849, -122.4094, i)] for i in range(10) # 这里假设我们有10个时间点的数据 ] # 将数据转换成适合 HeatMapWithTime 的格式 [[time_step_1_data], [time_step_2_data], ...] heat_data = [[[point[0], point[1], 1] for point in time_slice] for time_slice in data] # 创建中心位于旧金山的地图对象 m = folium.Map(location=[37.7749, -122.4194], zoom_start=13) # 添加热力图到地图中 HeatMapWithTime( heat_data, auto_play=True, max_opacity=0.6, ).add_to(m) # 保存生成的地图为 HTML 文件 m.save('heatmap_with_trajectory.html') ``` 这段代码首先导入必要的库并准备了一些模拟的时间序列位置数据[^1]。接着定义了一个包含这些位置坐标的数组,并将其转化为适用于 `HeatMapWithTime` 插件所需的结构化形式。最后,在指定地理位置的基础上初始化了一张 Folium 地图实例,并通过调用该插件的方法把处理过的数据集加入其中以便渲染出动态热力图效果[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值