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_vectors
#
# 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_vectors(rose)
plt.show()
#
# customize plot
#
dynamic_lisa_vectors(rose, arrows=False, color='r')
plt.show()
