Skip to main content

FaSt_Fig

FaSt_Fig is a wrapper for matplotlib that provides a simple interface for fast and easy plotting.

Key features:

  • Predefined templates for consistent styling
  • Figure instantiation in a class object
  • Simplified plotting methods with smart defaults
  • Automatic handling of DataFrames
  • Context manager support for clean resource management
  • Type hints and logging for better development experience

Installation

pip install fast_fig

Basic Usage

from fast_fig import FFig

x = [1, 2, 3, 4, 5]
y1 = [2, 4, 5, 6, 10]
y2 = [1, 3, 2, 6, 9]

# Simple plot example
fig = FFig()
fig.plot(x, y1)
fig.show()

# Use large template and save figure to multiple formats
fig = FFig("l")
fig.plot(x, y)
fig.save("plot.png", "pdf")

Context Manager

FaSt_Fig can be used as a context manager for automatic resource cleanup:

with FFig("l", nrows=2, sharex=True) as fig:  # Large template, 2 rows sharing x-axis
    fig.plot([1, 2, 2.5], label="First")  # Plot in first axis/subplot
    fig.set_title("First plot")
    fig.next_axis()  # Switch to second axis/subplot
    fig.plot([0, 1, 2], [0, 1, 4], label="Second")  # Plot with x,y data
    fig.legend()  # Add legend
    fig.grid()  # Add grid
    fig.set_xlabel("X values")  # Label x-axis
    fig.save("plot.png", "pdf")  # Save as PNG and PDF
    # Figure automatically closed when exiting the with block

Plot Types

FaSt_Fig supports all plots of matplotlib. The following plots have adjusted settings to improve their use.

# Bar plots
fig.bar_plot(x, height)

# Logarithmic scales
fig.semilogx(x, y)  # logarithmic x-axis
fig.semilogy(x, y)  # logarithmic y-axis

# 2D plots
x, y = np.meshgrid(np.linspace(-2, 2, 100), np.linspace(-2, 2, 100))
z = np.exp(-(x**2 + y**2))

fig.pcolor(z)  # pseudocolor plot
fig.colorbar(label="Values")  # add colorbar


fig.pcolor_log(z)  # pseudocolor with logarithmic color scale

fig.contour(z, levels=[0.2, 0.5, 0.8])  # contour plot

# Scatter plots
fig.scatter(x, y, c=colors, s=sizes)  # scatter plot with colors and sizes

DataFrame Support

FaSt_Fig has built-in support for pandas DataFrames:

import pandas as pd

# Create a DataFrame with datetime index
df = pd.DataFrame(
    {"A": [1, 2, 3, 4], "B": [2, 4, 6, 8]}, index=pd.date_range("2024-01-01", periods=4)
)

fig = FFig()
fig.plot(df)  # Automatic handling:
# - Each column becomes a line
# - Column names become labels
# - Index used as x-axis
# - Date index sets x-label to "Date"

Matplotlib interaction

FaSt_Fig provides direct access to matplotlib objects through these handlers:

  • fig.current_axis: Current axes instance for active subplot
  • fig.handle_fig: Figure instance for figure-level operations
  • fig.handle_plot: Current plot instance(s)
  • fig.handle_axis: All axes instances for subplot access
fig.current_axis.set_yscale("log")  # Direct matplotlib axis methods
fig.handle_fig.tight_layout()  # Adjust layout
fig.handle_plot[0].set_linewidth(2)  # Modify line properties
fig.handle_axis[0].set_title("First subplot")  # Access any subplot

These handles provide full access to matplotlib's functionality when needed.

Presets

FaSt_Fig comes with built-in presets that control figure appearance. Available preset templates:

  • m (medium): 15x10 cm, sans-serif font, good for general use
  • s (small): 10x8 cm, sans-serif font, suitable for small plots
  • l (large): 20x15 cm, sans-serif font, ideal for presentations
  • ol (Optics Letters): 8x6 cm, serif font, optimized for single line plots
  • oe (Optics Express): 12x8 cm, serif font, designed for equation plots
  • square: 10x10 cm, serif font, perfect for square plots

Each preset defines:

  • width: Figure width in cm
  • height: Figure height in cm
  • fontfamily: Font family (serif or sans-serif)
  • fontsize: Font size in points
  • linewidth: Line width in points

You can use presets in three ways:

  1. Use a built-in preset:
fig = FFig("l")  # Use large preset
  1. Load custom presets from a file:
fig = FFig("m", presets="my_presets.yaml")  # YAML format
fig = FFig("m", presets="my_presets.json")  # or JSON format
  1. Override specific preset values:
fig = FFig("m", width=12, fontsize=14)  # Override width and fontsize

The preset system also includes color sequences and line styles that cycle automatically when plotting multiple lines:

  • Default colors: blue, red, green, orange
  • Default line styles: solid (-), dashed (--), dotted (:), dash-dot (-.)

Contributing

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

License

Licensed under MIT License. See LICENSE for details.

Author

Written by Fabian Stutzki (fast@fast-apps.de)

For more information, visit www.fast-apps.de

Metadata

Release files for fast-fig 0.8.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fast-fig 0.8.4
File Size Uploaded
fast_fig-0.8.4.tar.gz 32.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fast-fig 0.8.4
File Interpreter ABI Platform
fast_fig-0.8.4-py3-none-any.whl Python 3 none any Details

Total release size: 50.3 kB

Release files / fast_fig-0.8.4.tar.gz

Download URL fast_fig-0.8.4.tar.gz
Size 32.3 kB
Tags Source
SHA-256 checksum
How to use checksums
09713ffbca27418cf12b545165f978ab2a9b115348e448b218fb8c1a5fc31146
BLAKE2b-256 checksum
How to use checksums
8c2fe977327a844ec807793d8dff3d59f52abd7c597474ed48d238063fef267e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release files / fast_fig-0.8.4-py3-none-any.whl

Download URL fast_fig-0.8.4-py3-none-any.whl
Size 18.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7e45ae14df7165e959bd0e4cf14f05eaa6f05186fd7a02bbfb67f1c9ea045c70
BLAKE2b-256 checksum
How to use checksums
a1d7b2f0aba69dd789743840df391399514a453415aca7fb8b56205c3ab5befb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.8.4 This release

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page