#!/usr/bin/env python # coding: utf-8 # # Community Internet Intensity Map # # ### M 4.7 - 1 km NW of Montagano, Italy # In[1]: import pandas as pd from lets_plot import * from lets_plot.geo_data import * # In[2]: LetsPlot.setup_html() # In[3]: df = pd.read_csv("https://raw.githubusercontent.com/JetBrains/lets-plot-docs/master/data/italy_cdi.csv")\ [["CDI", "No. of responses", "Latitude", "Longitude"]] df.columns = ["CDI", "number_of_responses", "lat", "lon"] print(df.shape) df.head() # In[4]: gdf = geocode_counties().scope("Italy").inc_res(4).get_boundaries() print(gdf.shape) gdf.head() # In[5]: p = ggplot(df) + \ geom_polygon(map=gdf, color="black", fill="white") + \ coord_map(xlim=[12, 16], ylim=[40, 43]) + \ theme_classic() + \ ggsize(640, 480) # In[6]: p + geom_point(aes(x="lon", y="lat", fill="CDI", size="number_of_responses"), \ stroke=1, shape=21, color="#800026") + \ scale_size(range=[4, 16], guide='none') + \ scale_fill_brewer(type='seq', palette="YlOrRd") + \ ggtitle("Community decimal intensity") + \ theme_void() # In[7]: p + geom_bin2d(aes(x="lon", y="lat", weight="number_of_responses", fill="..count.."), \ binwidth=[.5, .5], alpha=.75) + \ scale_fill_brewer(type='seq', palette="YlGnBu") + \ ggtitle("Number of responses") + \ theme_void() # In[8]: p + geom_density2d(aes(x="lon", y="lat", weight="number_of_responses", color="..level.."), size=1) + \ scale_color_brewer(type='seq', palette="YlGnBu") + \ ggtitle("Distribution of responses") + \ theme_void()