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.4.tar.gz (61.0 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.4-py3-none-any.whl (70.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sane_figs-0.2.4.tar.gz
  • Upload date:
  • Size: 61.0 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.4.tar.gz
Algorithm Hash digest
SHA256 eafc220dfcd487662cd169e2f26e708de2b7c7797ed660593cd4fd7019030903
MD5 5eebbc934184eb788884cda3c59c2f6c
BLAKE2b-256 63c953ed84fa2e8b5c2effa4b556c52aeccb0df2649763c30cae8f9c44b6d65d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: sane_figs-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 70.8 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a4da2a406bf90e1866fe97670c9254ec47622128909a6ebc58b99f5867874ea1
MD5 e0e13f02c4e57c284e921fe194cf752e
BLAKE2b-256 09098abdc65233435952ad2b47af9fce5c44ce92c91bec2214ca4fa883776b70

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