Визуализация скорости движения с цветовой шкалой для локации в Python - PullRequest
0 голосов
/ 27 октября 2018

у меня есть 3 основных значения (долгота, широта и скорость).Используя библиотеку Folium, я могу отобразить местоположение по долготе и долготе.но теперь я хочу также поставить скорость с цветовой шкалой.например, если скорость находится в диапазоне от 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.мой вывод такой.Кто-нибудь может мне помочь с этим?Спасибо!enter image description here

но я хочу добавить столбец скорости для визуализации данных, чтобы получить что-то вроде этого enter image description here

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Я подумал, что мог бы также добавить свой собственный ответ, потому что один из @GlobalTraveler предполагает рисование многих линий, которые, я думаю, немного грязные.

Похоже, что в фолиуме нет возможности сделать это, но вы можете вместо этого нарисовать несколько маркеров и покрасить их по отдельности

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

Чтобы это работало, вам понадобится массив points с 2 столбцами и массив speeds с количеством строк points. Обратите внимание, что вы можете изменить cm.cividis на все, что вам нужно (см. Ссылку здесь )

0 голосов
/ 27 октября 2018

Вы можете добавить значения rgba к ключевому слову color для каждой точки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...