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
from giddy.directional import Rose
from splot.giddy import dynamic_lisa_rose
#
# 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
#
dynamic_lisa_rose(rose, attribute=y1)
plt.show()
#
# customize plot
#
dynamic_lisa_rose(rose, c='r')
plt.show()
