# Install spatial packages
!pip install git+git://github.com/geopandas/geopandas.git --quiet
!pip install descartes --quiet
# Install Pysal packages
!pip install splot --quiet
!pip install libpysal --quiet
!pip install esda --quiet
#!pip install legendgram --quiet
# Import libraries
import numpy as np
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
from libpysal import weights
import mapclassify
import esda
from esda.moran import Moran, Moran_Local
import splot
from splot.esda import moran_scatterplot, plot_moran, lisa_cluster
#import legendgram
!wget https://raw.githubusercontent.com/quarcs-lab/book-2020-spatial-analysis-methods-and-practice/master/Data/City.geojson
--2021-01-24 04:28:19-- https://raw.githubusercontent.com/quarcs-lab/book-2020-spatial-analysis-methods-and-practice/master/Data/City.geojson
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.248.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.248.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 214764 (210K) [text/plain]
Saving to: ‘City.geojson’
City.geojson 100%[===================>] 209.73K --.-KB/s in 0.003s
2021-01-24 04:28:19 (74.4 MB/s) - ‘City.geojson’ saved [214764/214764]
gdf = gpd.read_file("City.geojson")
gdf.head()
gdf.plot("Population")
mapclassify.UserDefined(gdf.Population, bins=[2000, 5000, 15000, 20000])
fig, ax = plt.subplots(figsize=(9,6))
gdf.plot(column="Population", scheme='user_defined', classification_kwds={'bins':[2000, 5000, 15000, 20000]}, cmap='coolwarm', legend=True, ax=ax)
plt.tight_layout()
ax.axis("off")
plt.show()
mapclassify.NaturalBreaks(gdf.Population, k=3)
fig, ax = plt.subplots(figsize=(9,6))
gdf.plot(column="Population", scheme='NaturalBreaks', k=3, cmap='coolwarm', legend=True, ax=ax)
plt.tight_layout()
ax.axis("off")
plt.show()
fig, ax = plt.subplots(figsize=(9,6))
gdf.plot(column="Density", scheme='NaturalBreaks', k=5, cmap='coolwarm', legend=True, ax=ax)
plt.tight_layout()
ax.axis("off")
plt.show()
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(15,10))
gdf.plot(column="Population", scheme='NaturalBreaks', k=3, cmap='coolwarm', legend=True, ax=axes[0])
gdf.plot(column="Density", scheme='NaturalBreaks', k=3, cmap='coolwarm', legend=True, ax=axes[1])
plt.tight_layout()
axes[0].axis("off")
axes[1].axis("off")
plt.show()