Адаптируйте градиент цвета точек данных folium.plugins.HeatMap () к предоставленному branca.colormap - PullRequest
0 голосов
/ 20 апреля 2020

Описание проблемы

lon-lat - точки данных не отображаются на выходной графике / карте при создании калькулятора gradient, касающегося цветов в листве функция построения карты folium.plugins.HeatMap(). Функциональные документы можно найти здесь . Связано ли это с тем, что мой gradient -дикт передается со значениями RGBA-color вместо жирных строк, таких как "синий", "зеленый" и т. Д. c.? Если я не получу цветовые диапазоны, адаптированные к цветовой карте, нанесенной на карту вместе с реальной картой, мои точки данных всегда будут отображаться по умолчанию (что-то вроде синего над желтым и красным).

Как Кроме того, я также хотел бы знать, как изменить размер шрифта и цвет для branca.colormap.caption и индексных меток. Он всегда отображается черным цветом с размером шрифта по умолчанию. Иногда это на самом деле не видно на фоне текущей карты.

Ожидаемый результат

Точки данных моего folium.plugins.HeatMap() построены в соответствии с той же цветовой картой, которую я создал через branca.colormaps. Я думал, что это будет возможно через параметр градиента folium.plugins.HeatMap ().

Более того, я хотел бы изменить размер шрифта и цвет шрифта branca.colormap.caption, чтобы он был лучше адаптирован к фактический фон спутниковой карты. Цвет по умолчанию «черный» частично понятен.

Вывод на печать (фолио .__ версия __):

'0.10.1'

Python код с реализацией фолио и бранки - HeatMap с цветовой шкалой

# Package importing
import folium
import folium.plugins as fol_plugins


# Instantiate folium base map to plot on
folium_map = folium.Map(location=coord_center_point,
                        zoom_start=zoom_level,
                        max_zoom=max_zoom,
                        tiles=mapbox_tile_URL,
                        attr='Mapbox')

## Add BRANCA colormap ##
import branca.colormap as branca_folium_cm
colormap = branca_folium_cm.linear.Blues_05.scale(z_min, z_max)
colormap.caption = "Bla bla"  # how do I change fontsize and color here?
folium_map.add_child(colormap)

# Prepare gradient dictionary according to the example like {0.4: ‘blue’, 0.65: ‘lime’, 1: ‘red’}
gradient_dict = {}
# Get the index values and colors from the just created branca-colormap
# NOTE: colors are RGBA-vectors, like "(0.9372549019607843, 0.9529411764705882, 1.0, 1.0)":
for ind_val, c in zip(colormap.index, colormap.colors):
    # Create gradient dictionary for heatmap on the fly
    gradient_dict[ind_val] = c

# Resulting gradient dict in my case:
# {1.4117859851611496e-05: (0.9372549019607843, 0.9529411764705882, 1.0, 1.0), 0.00247235752568163: (0.7411764705882353, 0.8431372549019608, 0.9058823529411765, 1.0), 0.004930597191511649: (0.4196078431372549, 0.6823529411764706, 0.8392156862745098, 1.0), 0.007388836857341667: (0.19215686274509805, 0.5098039215686274, 0.7411764705882353, 1.0), 0.009847076523171685: (0.03137254901960784, 0.3176470588235294, 0.611764705882353, 1.0)}

# Overlay the heatmap data on top of the previously instantiated folium basemap
fol_plugins.HeatMap(data=zip(y, x, z),
                    name=titlestr,
                    min_opacity=min_alpha_opacity,
                    max_zoom=max_zoom,
                    radius=radius,
                    gradient=gradient_dict,  # insert gradient dict
                    blur=blur).add_to(folium_map)

...