# **Note**: this function creates Jupyter notebook widgets, so is meant only
# to run in a notebook.
#
import geopandas as gpd
import pandas as pd
from libpysal.weights.contiguity import Queen
from libpysal import examples
import numpy as np
import matplotlib.pyplot as plt
#
# If you want to see figures embedded inline in a Jupyter notebook,
# add a line ``%matplotlib inline`` at the top of your notebook.
#
from giddy.directional import Rose
from splot.giddy import dynamic_lisa_composite_explore
#
# get csv and shp files
#
shp_link = examples.get_path('us48.shp')
df = gpd.read_file(shp_link)
income_table = pd.read_csv(examples.get_path("usjoin.csv"))
#
# calculate relative values
#
for year in range(1969, 2010):
    income_table[str(year) + '_rel'] = (
        income_table[str(year)] / income_table[str(year)].mean())
#
# merge to one gdf
#
gdf = df.merge(income_table,left_on='STATE_NAME',right_on='Name')
#
# retrieve spatial weights and data for two points in time
#
w = Queen.from_dataframe(gdf)
w.transform = 'r'
y1 = gdf['1969_rel'].values
y2 = gdf['2000_rel'].values
#
# calculate rose Object
#
Y = np.array([y1, y2]).T
rose = Rose(Y, w, k=5)
#
# plot
#
fig = dynamic_lisa_composite_explore(rose, gdf, pattern='rel')
