Skip to content


Repository files navigation


Continuous Integration codecov Documentation Status PyPI version DOI DOI

Visual analytics for spatial analysis with PySAL.

Local Spatial Autocorrelation

What is splot?

splot connects spatial analysis done in PySAL to different popular visualization toolkits like matplotlib. The splot package allows you to create both static plots ready for publication and interactive visualizations for quick iteration and spatial data exploration. The primary goal of splot is to enable you to visualize popular PySAL objects and gives you different views on your spatial analysis workflow.

If you are new to splot and PySAL you will best get started with our documentation and the short introduction video of the package at the Scipy 2018 conference!

Installing splot

Installing dependencies

splot is compatible with Python 3.8+ and depends on geopandas 0.9.0 or later and matplotlib 3.3.3 or later.

splot also uses

  • numpy
  • seaborn
  • mapclassify
  • Ipywidgets

Depending on your spatial analysis workflow and the PySAL objects you would like to visualize, splot relies on:

  • PySAL 2.0

or separate packages found in the PySAL stack:

  • esda
  • libpysal
  • spreg
  • giddy

Installing splot

There are two ways of accessing splot. First, splot is installed with the PySAL 2.0 metapackage through:

$ pip install -U pysal


$ conda install -c conda-forge pysal

Second, splot can be installed as a separate package. If you are using Anaconda, install splot via the conda utility:

conda install -c conda-forge splot

Otherwise you can install splot from PyPI with pip:

pip install splot


Usage examples for different spatial statistical workflows are provided as notebooks:

You can also check our documentation for examples on how to use each function. A detailed report about the development, structure and usage of splot can be found here. More tutorials for the whole PySAL ecosystem can be found in our notebooks book project.

Contributing to splot

splot is an open source project within the Python Spatial Analysis Library that is supported by a community of Geographers, visualization lovers, map fans, users and data scientists. As a community we work together to create splot as our own spatial visualization toolkit and will gratefully and humbly accept any contributions and ideas you might bring into this project.

Feel free to check out our discussion spaces, add ideas and contributions:

If you have never contributed before or you are just discovering what PySAL and splot have to offer, reading through """Doc-strings""" and correcting our Documentation can be a great way to start. Check for spelling and grammar mistakes or use pep8 and pyflakes to clean our .py files. This will allow you to get used to working with git and generally allows you to familiarize yourself with the splot and PySAL code base.

If you have already used PySAL and splot and you are missing object-specific views for your analysis feel free to add to our code-base or discuss your ideas. Please make sure you include unit test, documentation and examples or (create an issue so someone else can work together with you). The common splot API design discussed here can help you to decide how to best integrate your visualization prototype into splot.

Beyond working on documentation and prototyping new visualizations, you can always write a bug report or feature request on Github issues. Whether large or small, any contribution makes a big difference and we hope you enjoy being part of our community as much as we do! The only thing we ask is that you abide principles of openness, respect, and consideration of others as described in the PySAL Code of Conduct.


We are planning on extending splot's visualization toolkit in future. Functionality we plan to implement includes:

  • visualisations for density methods (mapping density estimations)
  • cross-hatching fill styles for maps (to allow choropleth visualizations without class intervals)
  • legendgrams (map legends that visualize the distribution of observations by color in a given map)

If you are interested in working on one of these or any other methods, check out the linked issues or get in touch!

Community support