Skip to main content

Publication-ready figures for Matplotlib, Seaborn, Plotly, and Altair

Project description

Sane-Figs

Publication-ready figures for Matplotlib, Seaborn, Plotly, and Altair.

Overview

Sane-Figs is a Python package that automatically applies publication-ready styling to figures generated with popular Python visualization libraries. It solves the common problem of figures having text that is too small for articles and presentations.

Features

  • Automatic Styling: Apply publication-ready defaults with a single function call
  • Multiple Libraries: Support for Matplotlib, Seaborn, Plotly, and Altair
  • Version-Aware: Automatically detects library versions and adapts to API changes
  • Two Usage Modes: Global setup or context manager for scoped styling
  • Presets: Built-in presets for articles and presentations
  • Colorways: Publication-ready color palettes (default, nature, vibrant, pastel, colorblind-safe)
  • Watermarks: Text and image watermark support

Installation

pip install sane-figs

For full library support:

pip install sane-figs[all]

Or install with specific libraries:

pip install sane-figs[matplotlib,seaborn]

Quick Start

Global Setup

import sane_figs
import matplotlib.pyplot as plt

# Apply publication defaults globally
sane_figs.setup(mode='article')

# Your existing code works as-is
plt.plot([1, 2, 3], [1, 4, 9])
plt.title('My Figure')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.savefig('figure.png', dpi=300)

Context Manager

import sane_figs
import matplotlib.pyplot as plt

# Scoped styling
with sane_figs.publication_style(mode='article'):
    plt.plot([1, 2, 3], [1, 4, 9])
    plt.title('My Figure')
    plt.savefig('figure.png')

# Styling resets after context
plt.plot([1, 2, 3], [1, 4, 9])  # Back to default styling

With Colorways

import sane_figs
import matplotlib.pyplot as plt

# Apply colorway
sane_figs.setup(mode='article', colorway='nature')

# List available colorways
print(sane_figs.list_colorways())
# ['default', 'nature', 'vibrant', 'pastel', 'colorblind-safe']

With Watermarks

import sane_figs
import matplotlib.pyplot as plt

# Text watermark
sane_figs.setup(mode='article', watermark='© 2025 My Lab')

# Image watermark
sane_figs.setup(
    mode='article',
    watermark=sane_figs.create_image_watermark('logo.png', opacity=0.2)
)

Presets

Article Mode

Optimized for print publication:

  • Figure size: (6.4, 4.8) inches
  • DPI: 300
  • Title: 14pt
  • Axis labels: 12pt
  • Legend: 10pt
  • Tick labels: 10pt

Presentation Mode

Optimized for slides:

  • Figure size: (10, 7.5) inches
  • DPI: 150
  • Title: 24pt
  • Axis labels: 20pt
  • Legend: 16pt
  • Tick labels: 16pt

Colorways

  • default: Publication-ready palette optimized for print
  • nature: Earth tones inspired by nature
  • vibrant: High contrast colors for presentations
  • pastel: Soft, professional colors
  • colorblind-safe: Designed for colorblind accessibility

API Reference

Main Functions

  • setup(mode='article', libraries=None, colorway=None, watermark=None) - Apply publication defaults globally
  • publication_style(mode='article', libraries=None, colorway=None, watermark=None) - Context manager for scoped styling
  • list_colorways() - List available colorways
  • create_text_watermark(text, **kwargs) - Create a text watermark configuration
  • create_image_watermark(image_path, **kwargs) - Create an image watermark configuration

Per-Library Functions

  • setup_matplotlib(mode='article', colorway=None, watermark=None)
  • setup_seaborn(mode='article', colorway=None, watermark=None)
  • setup_plotly(mode='article', colorway=None, watermark=None)
  • setup_altair(mode='article', colorway=None, watermark=None)

License

MIT License - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

sane_figs-0.2.0.tar.gz (51.3 kB view details)

Uploaded Source

Built Distribution

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

sane_figs-0.2.0-py3-none-any.whl (59.5 kB view details)

Uploaded Python 3

File details

Details for the file sane_figs-0.2.0.tar.gz.

File metadata

  • Download URL: sane_figs-0.2.0.tar.gz
  • Upload date:
  • Size: 51.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sane_figs-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4183925d74605b98e4ba88f52867529c1b5185ca23dbd65b08c41cc01523aedf
MD5 36d9080732be8ed23e85d50dee94ec5e
BLAKE2b-256 d7061895b199a775b3237c94426651a2299c3da6d2e2f2a65595935c2b327bd9

See more details on using hashes here.

File details

Details for the file sane_figs-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: sane_figs-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 59.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sane_figs-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4a300cade3fc30ec67138a3d5023dfcb7afd8c196c37b61551c3d241e57d153d
MD5 ff6274c1d4a1de8abb6ed2ed847dc9d4
BLAKE2b-256 a7ea2db489634de985faeaaf7bc299d2067763d744c0c7e252543f6abfc9584f

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