Использовать индивидуальные маркеры в FastMarkerCluster в фолио Python? - PullRequest
1 голос
/ 10 марта 2019

Я могу добавить данные на карту фолиума с помощью MarkerCluster и изменить параметры маркера в соответствии с параметрами для каждой точки.

###Toy Example 1###


import pandas as pd
import numpy as np
import folium
import folium.plugins as plugins

lats = np.asarray([-54.4, -54.5, -54.6])
longs = np.asarray([-69.5, -69.5, -69.5])
data = np.asarray([70, 90, 5])
colour = np.asarray(['green', 'orange', 'red'])

dummy = [list(a) for a in zip(lats, longs, data, colour)]

dummy2 = pd.DataFrame(dummy, columns=['lat', 'lng', 'data', 'colour'])

dmap = folium.Map(location = [-54.5, -69.5], zoom_start = 7)

mc=plugins.MarkerCluster()

for a, row in dummy2.iterrows():
    folium.CircleMarker(location=[row[0],row[1]],
                        radius=row[2], color=row[3], fill=True).add_to(mc)

mc.add_to(dmap)

dmap

Поскольку в моем примере использования есть тысячи точек, я быхотел бы сделать что-то похожее на выше с FastMarkerCluster.Самое большее, чего я добился, это:

###Toy Example 2###

callback = """\
function (row) {
    var marker;
    marker = L.circle(new L.LatLng(row[0], row[1]), {color:'red'});
    return marker;
};
"""

lats = np.asarray([-54.4, -54.5, -54.6])
longs = np.asarray([-69.5, -69.5, -69.5])
data = np.asarray([70, 90, 5])
colour = np.asarray(['green', 'orange', 'red'])

dummy = [list(a) for a in zip(lats, longs)]

dummy2 = pd.DataFrame(dummy, columns=['lat', 'lng'])

dmap = folium.Map(location = [-54.5, -69.5], zoom_start = 7)

plugins.FastMarkerCluster(dummy, callback=callback).add_to(dmap)

dmap

Я могу представить добавление {radius: row[2], color: row[3]} к обратному вызову, чтобы получить желаемую функциональность.Однако, если я добавлю массивы data и / или colour к dummy (как в примере с игрушкой 1), я получу TypeError: must be real number, not numpy.str_.Если я использую dummy2 в примере с игрушкой 2, я получаю TypeError: must be real number, not str.

. Любая помощь в этом очень приветствуется.ура, -R

1 Ответ

1 голос
/ 31 марта 2019

Теперь это решается в основной ветке Folium на github благодаря Conegmo.Возникла проблема, когда имена столбцов считывались как часть данных.На данный момент установка Folium с использованием следующего означает, что все фиктивные примеры, которые я разместил, будут работать.

pip install git+https://github.com/python-visualization/folium.git
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...