Python 如何使颜色基于对开本的多段线

Python 如何使颜色基于对开本的多段线,python,data-visualization,folium,Python,Data Visualization,Folium,我尝试使用folium,根据速度(像Strava这样的应用程序)来绘制不同颜色的比赛路径 我看到你可以根据数据改变标记的颜色,但我不能用多段线转置它 以下是我的可视化代码: points=[] 对于gpx.tracks中的轨迹: 对于track.segments中的段: 对于段中的点。点: 追加(元组([点.纬度,点.经度]) ave_lat=总和(p[0]表示p in points)/len(points) ave_lon=总和(p[1]表示p in points)/len(points) m

我尝试使用folium,根据速度(像Strava这样的应用程序)来绘制不同颜色的比赛路径

我看到你可以根据数据改变标记的颜色,但我不能用多段线转置它

以下是我的可视化代码:

points=[]
对于gpx.tracks中的轨迹:
对于track.segments中的段:
对于段中的点。点:
追加(元组([点.纬度,点.经度])
ave_lat=总和(p[0]表示p in points)/len(points)
ave_lon=总和(p[1]表示p in points)/len(points)
my_map=folium.map(位置=[ave_lat,ave_lon],zoom_start=13)
多段线(点,color=“red”,权重=2.5,不透明度=1)。添加到(我的地图)

我还有一个带有经度、纬度和速度的数据框,我希望线条根据速度改变颜色。

多段线函数没有一个内置的方法来实现这一点。color参数需要一个字符串值:“red”或“#FF0000”。因此,我所知道的最简单的方法是创建一个字典,以四舍五入的速度作为键,以所需的颜色十六进制代码作为值:

给定包含坐标的数据帧:

>>> coordinates = {'lat':[52.354, 52.081, 52.384], 'lng':[4.903, 5.099, 4.643]}
>>> df = pd.DataFrame(data=coordinates, index=['Amsterdam', 'Utrecht', 'Haarlem'])
>>> df
              lat    lng
Amsterdam  52.354  4.903
Utrecht    52.081  5.099
Haarlem    52.384  4.643
以及一本包含以下各项之间速度的词典:

>>> dict_speed = {}
>>> cities_all = df.index.to_list()
>>> 
>>> for origin in df.index:
...     dict_speed[origin] = {
...         desti: np.random.uniform(3, 30) for desti in cities_all if origin != desti
...     }
...     cities_all.remove(origin)
... 
>>> dict_speed
{'Amsterdam': {'Utrecht': 11.17300608896625, 'Haarlem': 28.078139459927645},
 'Utrecht': {'Haarlem': 17.07939077211872},
 'Haarlem': {}}
最后一个要素:映射字典,使用此链接() :

以及绘图代码:

my_map = folium.Map(
    location=[np.mean(df["lat"].values), np.mean(df["lng"].values)],
    zoom_start=7,
    tiles="Stamen Terrain",
)

for city, row in df.iterrows():
    folium.Marker([row["lat"], row["lng"]], tooltip=city).add_to(my_map)

for origin, _ in dict_speed.items():
    for desti, speed in _.items():
        folium.PolyLine(
            (df.loc[origin].values, df.loc[desti].values),
            color=color_dict[round(speed)],
        ).add_to(my_map)

my_map
你会得到一张有颜色指示速度的地图

''
小叶有彩色线:

folium.ColorLine(
        positions = segments, # tuple of coordinates 
        colors = speed, # map each segment with the speed 
        colormap =  colormap, # map each value with a color 
        ).add_to(base)

所以你的多段线不是红色的?看起来一切正常。我试图通过导入matplotlib和
colormap=matplotlib.cm.Reds
指定颜色映射,但这似乎不起作用。什么是
colormap
folium.ColorLine(
        positions = segments, # tuple of coordinates 
        colors = speed, # map each segment with the speed 
        colormap =  colormap, # map each value with a color 
        ).add_to(base)