Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

figquilt-0.1.2.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

figquilt-0.1.2-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

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

Hashes for figquilt-0.1.2.tar.gz
Algorithm Hash digest
SHA256 82d67a34ad648a553365d51debe34da84bfe59057353ca2ed4182438b5ecf901
MD5 8dfa2840678f5dd2e6c52dd35541b0b1
BLAKE2b-256 9a904b0f182539dec349cf03ca147bd86f03e126c3edb1b2e93aa32e44774af7

See more details on using hashes here.

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

Hashes for figquilt-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 10598d4817ce96fa3e4399eb9b0dd133976cf7b3d961e6738a8db92aa28ab081
MD5 fd032738a6a057170743c24f2b4b67c2
BLAKE2b-256 e5a36adbacf0cfff6826107488ff1a9a74b87d2fc1e6cda2c0571053c17a2ec5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page