Open In App

Visualizing Geospatial Data using Folium in Python

Improve
Improve
Like Article
Like
Save
Share
Report

One of the most important tasks for someone working on datasets with countries, cities, etc. is to understand the relationships between their data’s physical location and their geographical context.  And one such way to visualize the data is using Folium.

Folium is a powerful data visualization library in Python that was built primarily to help people visualize geospatial data. With Folium, one can create a map of any location in the world. Folium is actually a python wrapper for leaflet.js which is a javascript library for plotting interactive maps.

We shall now see a simple way to plot and visualize geospatial data. We will use a dataset consisting of unemployment rates in the US

Installation

If folium is not installed, one can simply install it using  any one of the following commands: 

$ pip install folium

OR

$ conda install -c conda-forge folium

Using folium.Map(), we will create a base map and store it in an object. This function takes location coordinates and zoom values as arguments.

Syntax: folium.Map(location,tiles= “OpenStreetMap” zoom_start=4)

Parameters:

  • location: list of location coordinates
  • tiles: default is OpenStreetMap. Other options: tamen Terrain, Stamen Toner, Mapbox Bright etc.
  • zoom_start: int

Code:

Python3




# import the folium, pandas libraries
import folium
import pandas as pd
 
# initialize the map and store it in a m object
m = folium.Map(location = [40, -95],
               zoom_start = 4)
 
# show the map
m.save('my_map.html')


Output:

Import Dataset using pandas:

Now, we shall import the data sets using the Pandas library.

Python3




# getting the data
url = (
)
state_geo = f"{url}/us-states.json"
state_unemployment = f"{url}/US_Unemployment_Oct2012.csv"
state_data = pd.read_csv(state_unemployment)


Creating Map with Dataset:

Once we have all the data we have, we will visualize this data using choropleth maps. Choropleth maps represent divided areas in various colors based on the statistical variable presented to them. Here, we use the unemployment rate in the US as a means to divide regions into different colors.

Using folium.Choropleth(), we can plot the final map. The details of each attribute are given in the code itself.  The ‘key on’ parameter refers to the label in the JSON object (state_geo)  which has the state detail as the feature ID attached to each country’s border information. Our states in the data frame should match the feature ID in the json object.

Syntax: folium.Choropleth(geo_data,name,data,columns,fill_color, fill_opacity, line_opacity, key_on,legend_name)

Parameters:

  • geo_data: a set of geographic regions and their boundary coordinates
  • name: String (name of our map)
  • data: a numeric value for each region, used for the color
  • columns: list (columns we need to work on)
  • fill_color: Color of the map, eg: YlGn
  • fill_opacity: opacity of the colors filled
  • line_opacity: opacity of the border lines
  • legend_name: String

Finally, we can save our map as an HTML file.

Python3




folium.Choropleth(
   
      # geographical locations
    geo_data = state_geo,                    
    name = "choropleth",
   
      # the data set we are using
    data = state_data,                       
    columns = ["State", "Unemployment"],    
   
      # YlGn refers to yellow and green
    fill_color = "YlGn",                     
    fill_opacity = 0.7,
    line_opacity = .1,
      key_on = "feature.id",
    legend_name = "Unemployment Rate (%)",
).add_to(m)                                
 
m.save('final_map.html')


Output:



Last Updated : 28 Nov, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads