Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用位置颜色比例可视化移动速度_Python_Google Maps_Visualization_Folium - Fatal编程技术网

在Python中使用位置颜色比例可视化移动速度

在Python中使用位置颜色比例可视化移动速度,python,google-maps,visualization,folium,Python,Google Maps,Visualization,Folium,我有3个主要值(经度、纬度和速度)。使用Folium库,我可以用lon和lat度绘制位置图。但是现在我想把速度和色阶放在一起。例如,如果速度在0-20之间,则线条部分为红色,如果速度在20-60之间,则线条为黄色,如果速度高于60,则线条为绿色。可以用python来做吗?有人能帮我吗?我目前的代码是: my_map = folium.Map(location=[ave_lat, ave_long], zoom_start=14) folium.PolyLine(points, color="b

我有3个主要值(经度、纬度和速度)。使用Folium库,我可以用lon和lat度绘制位置图。但是现在我想把速度和色阶放在一起。例如,如果速度在0-20之间,则线条部分为红色,如果速度在20-60之间,则线条为黄色,如果速度高于60,则线条为绿色。可以用python来做吗?有人能帮我吗?我目前的代码是:

my_map = folium.Map(location=[ave_lat, ave_long], zoom_start=14) 
folium.PolyLine(points, color="blue", weight=2.5, opacity=1).add_to(my_map)
my_map
这里的“点”是lon和lat对。但我的csv中也有速度栏。我的输出是这样的。有人能帮我吗?谢谢

但我想为数据可视化添加速度列,以获得类似的结果

您可以为每个点的颜色关键字添加rgba值

我想我还是加上我自己的答案吧,因为@GlobalTraveler的答案需要画很多线,我觉得这有点脏

似乎在folium中确实没有这样做的选项,但您可以绘制多个标记,并分别为它们着色

import numpy as np
from matplotlib import cm
import folium

# rgb tuple to hexadecimal conversion
def rgb2hex(rgb):
    rgb = [hex(int(256*x)) for x in rgb)]
    r, g, b = [str(x)[2:] for x in rgb]
    return "#{}{}{}".format(r, g, b)

# Defines the color mapping from speeds to rgba
color_mapper = cm.ScalarMappable(cmap=cm.cividis)
rgb_values = color_mapper.to_rgba(speeds)[:3] # keep rgb and drop the "a" column
colors = [rgb2hex(rgb) for rgb in rgb_values]

my_map = folium.Map(location=[ave_lat, ave_long], zoom_start=14) 

for point, color, speed in zip(points, colors, speeds):
    folium.CircleMarker(location=point,
                        radius=1.25,
                        popup=str(speed),
                        fill_color=color).add_to(my_map)
my_map
为此,您需要一个包含两列的数组
,一个数组
速度
的行数相同。
请注意,您可以将
cm.cividis
更改为任何适合您需要的内容(请参阅参考资料)

很抱歉,但您确定吗?这是没有记录在这里道歉,我的意思是说十六进制值!我的意思是,你确定你可以为每个点指定颜色吗?是的,诀窍是通过每个点循环,并为每个线段设置值。类似于~~的颜色,点在拉链上(颜色,点):folium.PolyLine(点,颜色=颜色)。添加到(我的地图)~~这里我只使用两列,latitute和longitute列非常感谢您的帮助。但是我从这部分中得到了一些错误。如果你能帮我解决这个问题,我真的很感激。因为我是pyhton的新手,这个任务对我来说非常重要。下面是下一条注释中的代码,我的错误是“太多的值无法解包(预期为3)”。我还想指定每一速度变化的颜色限制,正如我在问题描述中提到的,因为函数中有一些错误。然而,如果你有很重的GPS轨迹,通过这种方法单独添加点,你会得到一张需要数小时才能打开的巨大地图。。不知道其他方法rgb2hex在
matplotlib.colors.rgb2hex
中可用。