Как скрыть легенду хороплет python folium

Я создал карту фолиума с двумя слоями картограммы:

https://ghana.deta.dev/

Как вы можете видеть на картинке, сейчас выбран только один слой (зеленый). Тем не менее, легенда показана для обоих (синий и зеленый).

Есть ли способ синхронизировать его с элементом управления слоями?

Вместо моего кода я ссылаюсь на учебник folium Choropleth, чтобы сделать его более удобным для всех:

источник: https://python-visualization.github.io/folium/quickstart.html#Choropleth-maps Как видите, независимо от управления слоями, легенда всегда включена.

Смотрите это: https://nbviewer.org/gist/BibMartin/f153aa957ddc5fadc64929ab‌​dee9ff2e

r-beginners 21.11.2022 13:57
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
Python PyPDF2 - запись метаданных PDF
Python PyPDF2 - запись метаданных PDF
Python скрипт, который будет записывать метаданные в PDF файл, для этого мы будем использовать PDF ридер из библиотеки PyPDF2 . PyPDF2 - это...
Переменные, типы данных и операторы в Python
Переменные, типы данных и операторы в Python
В Python переменные используются как место для хранения значений. Пример переменной формы:
Почему Python - идеальный выбор для проекта AI и ML
Почему Python - идеальный выбор для проекта AI и ML
Блог, которым поделился Harikrishna Kundariya в нашем сообществе Developer Nation Community.
Как автоматически добавлять котировки в заголовки запросов с помощью PyCharm
Как автоматически добавлять котировки в заголовки запросов с помощью PyCharm
Как автоматически добавлять котировки в заголовки запросов с помощью PyCharm
Анализ продукта магазина на Tokopedia
Анализ продукта магазина на Tokopedia
Tokopedia - это место, где продавцы могут продавать свои товары. Товар должен быть размещен на витрине, чтобы покупателям было легче найти товар...
0
1
129
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

r-beginners предоставил ключ к этому решению в своем комментарии. Потребовалось несколько дополнительных доработок, поэтому я считаю целесообразным добавить код для дальнейшего использования.

Кратко объясняя решение, цветовая карта бранки сначала удаляется, а затем повторно добавляется к карте, привязанной к самому слою картограммы, благодаря пользовательскому макроэлементу.

from branca.element import MacroElement

from jinja2 import Template

import pandas as pd


class BindColormap(MacroElement):
    """Binds a colormap to a given layer.

    Parameters
    ----------
    colormap : branca.colormap.ColorMap
        The colormap to bind.
    """
    def __init__(self, layer, colormap):
        super(BindColormap, self).__init__()
        self.layer = layer
        self.colormap = colormap
        self._template = Template(u"""
        {% macro script(this, kwargs) %}
            {{this.colormap.get_name()}}.svg[0][0].style.display = 'block';
            {{this._parent.get_name()}}.on('overlayadd', function (eventLayer) {
                if (eventLayer.layer == {{this.layer.get_name()}}) {
                    {{this.colormap.get_name()}}.svg[0][0].style.display = 'block';
                }});
            {{this._parent.get_name()}}.on('overlayremove', function (eventLayer) {
                if (eventLayer.layer == {{this.layer.get_name()}}) {
                    {{this.colormap.get_name()}}.svg[0][0].style.display = 'none';
                }});
        {% endmacro %}
        """)  # noqa

url = (
    "https://raw.githubusercontent.com/python-visualization/folium/master/examples/data"
)
state_geo = f"{url}/us-states.json"
state_unemployment = f"{url}/US_Unemployment_Oct2012.csv"
state_data = pd.read_csv(state_unemployment)

m = folium.Map(location=[48, -102], zoom_start=3)

c = folium.Choropleth(
    geo_data=state_geo,
    name="choropleth",
    data=state_data,
    columns=["State", "Unemployment"],
    key_on="feature.id",
    fill_color="YlGn",
    fill_opacity=0.7,
    line_opacity=0.2,
    legend_name="Unemployment Rate (%)",
)

for key in c._children:
    if key.startswith('color_map'):
        branca_color_map = c._children[key]
        del(c._children[key])


m.add_child(c)
m.add_child(folium.map.LayerControl())
m.add_child(branca_color_map)
m.add_child(BindColormap(c, branca_color_map))
m

Другие вопросы по теме

Как создать таймер обратного отсчета, который продолжает отсчет после однократного нажатия кнопки, обновляя текст на холсте tkinter
BeautifulSoup - Соберите продукт и варианты продукта и экспортируйте его в csv
Почему выражения генератора имеют меньшую глубину рекурсии по сравнению с объектами карты в python 3, несмотря на то, что они считаются более питоническими?
Есть ли способ удалить первичный ключ из результатов запроса SQLAlchemy?
Прочитайте содержимое текстового файла в фрейм данных pandas из zip-папки
Создание простого взломщика паролей с использованием массивов numpy
Какой тип данных используется set в python внутри?
Извлечение узлов из json на основе пользовательского ввода с сохранением части объекта более высокого уровня.
Как удалить все элементы, которые находятся между двумя дубликатами в списке
Удаление лишних скобок в арифметическом выражении