figquilt is a small, language-agnostic CLI tool that composes multiple figures (PDF/SVG/PNG) into a single publication-ready figure, based on a simple layout file (YAML/JSON). The key function is creating a PDF by composing multiple PDFs and adding subfigure labels and minimal annotations.
Project description
figquilt
Figure quilter: A CLI tool to compositing multiple figures (PDF, SVG, PNG) into a publication-ready figure layout.
figquilt takes a simple layout file (YAML) describing panels and their positions, composed of various inputs (plots from R/Python, diagrams, photos), and stitches them into a single output file (PDF, SVG) with precise dimension control and automatic labeling.
Features
- Precise Layout: Define exact physical dimensions (mm) for the page and panels.
- Mixed Media: Combine PDF, SVG, and PNG inputs in one figure.
- Automated Labeling: Automatically add subfigure labels (A, B, C...) with consistent styling.
- Reproducible: Layouts are defined in version-controllable text files (YAML).
- Language Agnostic: It is a CLI tool, so it works with outputs from any tool (R, Python, Julia, Inkscape, etc.).
Installation
uv tool install figquilt
Or add it as a project dependency:
uv add figquilt
Development Installation
git clone https://github.com/yy/figquilt.git
cd figquilt
uv sync
Usage
Define a layout in a YAML file (e.g., figure1.yaml):
page:
width: 180 # mm
height: 120 # mm
panels:
- id: A
file: "plots/scatter.pdf"
width: 80
x: 0
y: 0
- id: B
file: "diagrams/schematic.svg"
width: 80
x: 90
y: 0
Run figquilt to generate the figure:
figquilt figure1.yaml figure1.pdf
Watch Mode
Use --watch to automatically rebuild when the layout file or any panel source files change:
figquilt --watch figure1.yaml figure1.pdf
This is useful during layout iteration - edit your YAML or regenerate a panel, and the output updates automatically.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file figquilt-0.1.2.tar.gz.
File metadata
- Download URL: figquilt-0.1.2.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82d67a34ad648a553365d51debe34da84bfe59057353ca2ed4182438b5ecf901
|
|
| MD5 |
8dfa2840678f5dd2e6c52dd35541b0b1
|
|
| BLAKE2b-256 |
9a904b0f182539dec349cf03ca147bd86f03e126c3edb1b2e93aa32e44774af7
|
File details
Details for the file figquilt-0.1.2-py3-none-any.whl.
File metadata
- Download URL: figquilt-0.1.2-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10598d4817ce96fa3e4399eb9b0dd133976cf7b3d961e6738a8db92aa28ab081
|
|
| MD5 |
fd032738a6a057170743c24f2b4b67c2
|
|
| BLAKE2b-256 |
e5a36adbacf0cfff6826107488ff1a9a74b87d2fc1e6cda2c0571053c17a2ec5
|