Plotting Geospatial Data using GeoPandas
Last Updated :
16 Jul, 2020
GeoPandas is an open source tool to add support for geographic data to Pandas objects. In this, article we are going to use GeoPandas and Matplotlib for plotting geospatial data.
Installation
We are going to install GeoPandas, Matplotlib, NumPy and Pandas.
pip install geopandas
pip install matplotlib
pip install numpy
pip install pandas
Note: If you don’t want to install these modules locally on your computer, use Jupyter Notebook or Google Colab.
Getting Started
Importing modules and dataset
We are going to import Pandas for the dataframe data structure, NumPy for some mathematical functions, GeoPandas for supporting and handling geospatial data and Matplotlib for actually plotting the maps.
import pandas as pd
import geopandas as gpd
import numpy as np
import matplotlib.pyplot as plt
GeoPandas gives us some default datasets along with its installation to play around with. Let’s read one of the datasets.
Python3
import pandas as pd
import geopandas as gpd
import numpy as np
import matplotlib.pyplot as plt
world = gpd.read_file(gpd.datasets.get_path( 'naturalearth_lowres' ))
world.head()
|
Output:

world.head()
Some of the other datasets to play with are ‘naturalearth_cities’ and ‘nybb’. Feel free to experiment with them later. We can use world and plot the same using Matplotlib.
Output:

World Plot
Analyse the datasets
Now, if we see world, we have a lot of fields. One of them is GDP estimate(or gdp_md_est). However, to show how easily data can be filtered in or out in pandas, let’s filter out all continents except Asia.
Python3
worldfiltered = world[world.continent = = "Asia" ]
worldfiltered.plot(column = 'gdp_md_est' , cmap = 'Reds' )
|

GDP of Countries in Asia
cmap property is used to plot the data in the shade specified. The darker shades mean higher value while the lighter shades means lower value. Now, let’s analyse the data for population estimate(pop_est).
Python3
world.plot(column = 'pop_est' )
|
Output:

Population Estimate
The above image is not very good in conveying the data. So let’s change some properties to make it more comprehensible. First, let’s increase the size of the figure and then set an axis for it. We first plot the world map without any data to on the axis and then we overlay the plot with the data on it with the shade red. This way the map is more clear and dark and makes the data more understandable. However, this map is still a little vague and won’t tell us what the shades mean.
Python3
fig, ax = plt.subplots( 1 , figsize = ( 16 , 8 ))
world.plot(ax = ax, color = 'black' )
world.plot(ax = ax, column = 'pop_est' , cmap = 'Reds' )
|
Output:

World Population
Let’s import the toolkits that allow us to make dividers within the plot. After this we are going to plot the graph as we did before, but this time we are going to add a facecolor. The facecolor property is going to change the background to a color it is set to(in this case, light blue). Now we need to create a divider for creating the color box within the graph, much like dividers in HTML. We are creating a divider and setting its properties like size, justification etc.
Then we need to create the color box in the divider we created. So obviously, the highest value in the color box is going to be the highest population in the dataset and the lowest value is going to be zero.
Python3
from mpl_toolkits.axes_grid1 import make_axes_locatable
fig, ax = plt.subplots( 1 , figsize = ( 16 , 8 ),
facecolor = 'lightblue' )
world.plot(ax = ax, color = 'black' )
world.plot(ax = ax, column = 'pop_est' , cmap = 'Reds' ,
edgecolors = 'grey' )
div = make_axes_locatable(ax)
cax = div.append_axes( "right" , size = "3 %" , pad = 0.05 )
vmax = world.pop_est. max ()
mappable = plt.cm.ScalarMappable(cmap = 'Reds' ,
norm = plt.Normalize(vmin = 0 , vmax = vmax))
cbar = fig.colorbar(mappable, cax)
ax.axis( 'off' )
plt.show()
|
Output:

World Population
Thus in this article we have seen how we can use GeoPandas to get geospatial data and plot it using Matplotlib. Custom datasets can be used to analyse specific data and city-wise data can also be used. Also, GeoPandas can be used with Open Street Maps, which provides very specific geospatial data(example, streets, hospitals in a city etc., ). The same knowledge can be extended further and can be used for specific statistical and data analysis.
Similar Reads
Python | Plotting Google Map using gmplot package
gmplot is a matplotlib-like interface to generate the HTML and javascript to render all the data user would like on top of Google Maps. Command to install gmplot : pip install gmplotCode #1 : To create a Base Map [GFGTABS] Python # import gmplot package import gmplot # GoogleMapPlotter return Map ob
2 min read
Pair plots using Scatter matrix in Pandas
Checking for collinearity among attributes of a dataset, is one of the most important steps in data preprocessing. A good way to understand the correlation among the features, is to create scatter plots for each pair of attributes. Pandas has a function scatter_matrix(), for this purpose. scatter_ma
2 min read
Plotting graph For IRIS Dataset Using Seaborn And Matplotlib
Matplotlib.pyplot library is most commonly used in Python in the field of machine learning. It helps in plotting the graph of large dataset. Not only this also helps in classifying different dataset. It can plot graph both in 2d and 3d format. It has a feature of legend, label, grid, graph shape, gr
2 min read
3D Plotting sample Data from MongoDB Atlas Using Python
MongoDB, the most popular NoSQL database, is an open-source document-oriented database. The term âNoSQLâ means ânon-relationalâ. It means that MongoDB isnât based on the table-like relational database structure but provides an altogether different mechanism for storage and retrieval of data. This fo
3 min read
Olympics Data Analysis Using Python
In this article, we are going to see the Olympics analysis using Python. The modern Olympic Games or Olympics are leading international sports events featuring summer and winter sports competitions in which thousands of athletes from around the world participate in a variety of competitions. The Oly
4 min read
Plot a Pie Chart in Python using Matplotlib
A Pie Chart is a circular statistical plot that can display only one series of data. The area of the chart is the total percentage of the given data. Pie charts in Python are widely used in business presentations, reports, and dashboards due to their simplicity and effectiveness in displaying data d
8 min read
How to Install Geopandas in Kaggle
GeoPandas simplifies working with geospatial data. It extends the functionality of pandas by adding support for geographic objects such as points, lines, and polygons. If you're using Kaggle for your data analysis or machine learning projects, you can easily install and use GeoPandas to handle geosp
2 min read
Simple Plot in Python using Matplotlib
Matplotlib is a Python library that helps in visualizing and analyzing the data and helps in better understanding of the data with the help of graphical, pictorial visualizations that can be simulated using the matplotlib library. Matplotlib is a comprehensive library for static, animated and intera
5 min read
Multiplots in Python using Matplotlib
Matplotlib is a Python library that can be used for plotting graphs and figures. Plotting multiplots or multiple plots are often required either for comparing the two curves or show some gradual changes in the multiple plots, and this can be done using Subplots. Subplots are one of the most importan
3 min read
Active Product Sales Analysis using Matplotlib in Python
Every modern company that engages in online sales or maintains a specialized e-commerce website now aims to maximize its throughput in order to determine what precisely their clients need in order to increase their chances of sales. The huge datasets handed to us can be properly analyzed to find out
3 min read