MPLLayout
Summary
MPLLayout is a package to create precise figure layouts in matplotlib. It works by modelling figure elements using geometric primitives (for example, text anchors are points, the figure is a quadrilateral, etc.), then constraining the sizes and positions of these elements using geometric constraints (for example, fixing the width of a figure, constraining axes sides to be collinear, constraining axes to lie on a grid, etc.).
Using this approach, MPLLayout can:
- align figure elements (axes, text label location, x and y axis, etc.),
- specify margins around axes,
- create templates for figures across different mediums (posters, manuscripts, slides, etc.),
- and more!
Basic usage
The tutorial notebook in examples/tutorial.ipynb demonstrates the basic usage of the package and explains some of the commonly used geometric constraints.
Other examples are also given in the examples folder.
The notebook at examples/ten_simple_rules_demo.ipynb contains an interactive demo to recreate a figure from "Ten Simple Rules For Better Figures" (Rougier, Droettboom and Bourne 2014).
A summary of how to use the package is shown in the figure below.
The process resembles creating and constraining geometry in computer-aided design programs like AutoCAD, SolidWorks, etc.
Motivation
Matplotlib contains several strategies for creating figure layouts (for example, GridSpec and subplots for grid-based layouts).
While these approaches work well, greater control over figure element positions is sometimes desirable;
for example, when preparing figures for published documents, research papers, or slides.
Installation
You can install the package from PyPI using
pip install matplotlib-layout
Alternateively, clone the repository into a local drive. Navigate to the project directory and run
pip install .
The package requires numpy, matplotlib, and jax.
Contributing
This project is a work in progress so there are likely bugs and missing features. If you would like to contribute a bug fix, a feature, refactor etc. thank you! All contributions are welcome.
Motivation and Similar Projects
A similar project with a geometric constraint solver is pygeosolve.
There is also another project prototype for a constraint-based layout engine for matplotlib MplLayouter, although it doesn't seem active as of 2023.
Metadata
Release files for matplotlib-layout 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| matplotlib_layout-0.1.0.tar.gz | 41.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| matplotlib_layout-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 79.8 kB
Release files / matplotlib_layout-0.1.0.tar.gz
| Download URL | matplotlib_layout-0.1.0.tar.gz |
|---|---|
| Size | 41.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6a2ad344c885fe073ac96ce13e619966811e70a1a8eb9fc406f03c9b7509bd70
|
|
BLAKE2b-256 checksum How to use checksums |
f9f831c73b0e39ed440ffff74f46512922ad1613c086901efd2c3faff7a8aea8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.12.7
|
Release files / matplotlib_layout-0.1.0-py3-none-any.whl
| Download URL | matplotlib_layout-0.1.0-py3-none-any.whl |
|---|---|
| Size | 37.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
81240c8f8500e5f64e84fceb2721d8f2fed1942eba8ec099475113af4824885e
|
|
BLAKE2b-256 checksum How to use checksums |
d9372e508e884b96f9bf1ce7ee770c9512fc9f93fc473efe7faeb9a5ea458f23
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.12.7
|