PySAL Visualization Project - MridulS/pysal GitHub Wiki
Introduction
This document will guide the development effort for the PySAL visualization layer. Currently residing in contrib, the goal of the layer is to provide simple (use- and dependency-wise) and lightweight conversion of PySAL structures into commonly used visualizations. The main use-cases that inspired and guide the development of the layer are:
- "Interactive" data exploration (many static but easy plots that allow you to quickly iterate over ideas until finding the right one)
- Teaching
- (Publication-ready) static plots
Participating
Design and Components
The layer is composed of three main levels, each with a specific function in mind:
- Low-level: convert
PySAL
geometries (Polygon
,Line
andPoint
) toMatplotlib
geometries. This is mostly implemented already. - Mid-level: utilities where most of the
PySAL
functionality is implemented and applied toMatplotlib
objects. This includes: subsetting (e.g. plot only part of a .shp), aligning (e.g. same axes for different layers) and transforming (e.g. classify values to colors) graphical objects. All the new functionality required to create the end-user views described below will live here. - High-level: end-user utilities that wrap generic functionality from the mid-level into specific views that visualize output from
PySAL
methods and classes.
This structure combines simplicity and ease of use, implemented in the end-user functions, with a great deal of flexibility implemented in the mid-level (just as in generic Matplotlib, if you know what you're doing, the sky is the limit).
Common Views
- Maps
- Choropleth
- LISA
- Join Count (BW)
- Scatter Plots
- Moran
- Space-Time LISA
- Bivariate LISA
- Densities
- Lorenz Curve (GINI)
- Rank Paths (graphs/networks)
- Rose Diagram
- Directional LISA
- Time series (spatial dynamics)
- Point Patterns
- Weights
- Cardinalities
- choropleths
- histogram
- graph/connectivity
- slider for weights explorer
- slider for distance weights
- Cardinalities
Roadmap
Our plan is to proceed in three stages.
- Prototype examples of a select view views using matplotlib
- Refine our design of these views based on prototype experience
- Design an API that could support use of PySAL with other visualization toolkits (i.e., D3, Bokeh, follium, future ipython Notebook interactivity).