Как добавить кластерные маркеры в Choropleth с помощью Folium - PullRequest
1 голос
/ 22 января 2020

Я некоторое время работал с картами маркеров Choropleth и Cluster в Folium (которые великолепны). Мой вопрос заключается в том, можно ли объединить их в одну карту, чтобы я мог видеть, как одна переменная влияет на другую. Я могу заставить оба типа карт работать индивидуально, поэтому никаких проблем нет. До сих пор я пытался объединить эти два кода:

import pandas as pd
import folium
from folium.plugins import MarkerCluster

input_filename="input_filename.csv"
df = pd.read_csv(input_filename,encoding='utf8')
geo = 'blah.json'
comparison = 'comparison.csv'
comparison_data = pd.read_csv(comparison)

m = folium.Map(location=[Lat,Lon], zoom_start=12)

folium.Choropleth(
    geo_data=geo,
    name='choropleth',
    data=comparison_data,
    columns=['col1','col2'],
    key_on='feature.properties.ID',
    fill_color='OrRd',
    fill_opacity=0.5,
    line_opacity=0.5,
    legend_name='Blah (%)'
).add_to(m)

folium.LayerControl().add_to(m)
marker_cluster = MarkerCluster().add_to(m)

for row in df.itertuples():
    folium.Marker(location=[row.Lat,row.Lon],popup=row.Postcode).add_to(marker_cluster)

m

Он создает хороплет, но также не накладывает слои кластерных маркеров. Стоит отметить, что у меня была проблема с кластерными маркерами отдельно, когда они не отображались в записной книжке Jupyter, но я справился с этим, сохранив файл как html, который затем можно было просмотреть.

1 Ответ

2 голосов
/ 22 января 2020

Хорошо, так что я решил, очень рад !! Решение состояло в том, чтобы сначала сделать маркерный кластер, а затем продолжить с помощью Choropleth:

import pandas as pd
import folium
from folium.plugins import MarkerCluster

m = folium.Map(location=[Lat,Lon], zoom_start=12)

input_filename="input_filename.csv"
df = pd.read_csv(input_filename,encoding='utf8')
geo = 'blah.json'
comparison = 'comparison.csv'
comparison_data = pd.read_csv(comparison)

folium.LayerControl().add_to(m)
marker_cluster = MarkerCluster().add_to(m)

for row in df.itertuples():
    folium.Marker(location=[row.Lat,row.Lon],popup=row.Postcode).add_to(marker_cluster)

folium.Choropleth(
    geo_data=geo,
    name='choropleth',
    data=comparison_data,
    columns=['col1','col2'],
    key_on='feature.properties.ID',
    fill_color='OrRd',
    fill_opacity=0.5,
    line_opacity=0.5,
    legend_name='Blah (%)'
).add_to(m)

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