Как выделить границы мира и страны при наведении курсора мыши с помощью Folium? - PullRequest
0 голосов
/ 01 июня 2018

Как следует из названия, я изо всех сил пытаюсь понять, какую функцию использовать для выделения каждой отдельной страны в функции «наведения мыши» с использованием Folium в Python.У меня есть функциональная карта Choropleth, с некоторыми функциями, использующими Plot.ly в настоящее время.

Буду очень признателен за любую помощь или указания в правильном направлении =)

Исходный код приведен ниже, для проекта, которым я пользуюсь Jupyter Notebook:

import urllib.request, json 
import json
import numpy as np
#import pycountry as pc
import pandas as pd
import csv
import itertools
import plotly.plotly as py
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.graph_objs as go

init_notebook_mode(connected=True)

#EXTRACTING DATA AND CONVERTING IT TO A 1-DIMENSIONAL ARRAY

with urllib.request.urlopen("http://api.population.io:80/1.0/countries") as url:
    slash = "/"
    api_data = json.loads(url.read().decode())
    twoD_data = np.array(list(api_data.values())) #turns the dictionary into a 2D array
    all_countries = twoD_data.ravel()
    country_ready_for_fetch = []

#FORMATTING COUNTRIES FOR URL-CALLS LATER


country_and_countryCodes_csv = pd.read_csv("http://kejser.org/wp-content/uploads/2014/06/Country.csv", delimiter='|')
country_and_countryCodes = country_and_countryCodes_csv[["CountryName","Alpha3Code"]]


chained_country_list = set(itertools.chain.from_iterable(country_and_countrycodes)) & set(all_countries)

for country in chained_country_list:
    try:
        if '/' not in country:
            j = country.replace(" ","%20")
            country_ready_for_fetch.append(j)

    except AttributeError:
        pass

#EXTRACTING THE POPULATION DATA
year = "/2013"
date = year + '-01-01'

country_population = []

for country in country_ready_for_fetch:
    url = "http://api.population.io:80/1.0/population/"

    with urllib.request.urlopen(url + country + date) as url:
        data = json.loads(url.read().decode())
        country_population.append(country)
        country_population.append(data)

result = {}

for i in range(0, len(country_population), 2):
    result[country_population[i]] = country_population[i+1]['total_population']['population']

result = {key.replace('%20', ' '): value for key, value in result.items()}


l = np.array(country_and_countrycodes).tolist()


for i in l:
    i.append(result.get(i[0]))


df = pd.DataFrame(l)
df.columns = ['Country','CountryCode','Population']
df['CountryCode'] = df['CountryCode'].str.upper()



data = dict(type = 'choropleth', 
           locations = df['CountryCode'],
           z = df['Population'],
           text = df['Country'],
          # colorscale ='Portland',
           colorbar = dict(title = 'Population in thousands'))

layout = dict(title = '2013 global Population', 
             geo = dict(showframe = False,
                       showlakes = True, 
                       showrivers = True,
                       showcoastlines = True,
                       coastlinewidth = 6,
                       coastlinecolor = 'rgb(127,255,0)',
                       rivercolor = 'rgb(85,173,240)', 
                       lakecolor = 'rgb(85,173,240)',

                       projection = {'type': 'stereographic'}))

choromap3 = go.Figure(data = [data], layout = layout)


plot(choromap3)
...