Skip to main content

Make figures with context managers in python: quicker, simpler, more readable.

Project description

Figurex

PyPi Version MIT License Read the Docs Issues
Make figures with context managers in python: quicker, simpler, more readable.

with Figure() as ax:
    ax.plot([1,2],[3,4])

Idea

Tired of lengthy matplotlib code just for simple plotting?

# How plotting used to be:
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1,2, figsize=(4,5))
plt.set_title("My plot")
ax = axes[0]
ax.plot([1,2],[3,4])
ax = axes[1]
ax.plot([2,3],[4,5])
fig.savefig("file.png", bbox_inches='tight')
plt.show()

Beautify your daily work with shorter and more readable code:

# How plotting becomes with figurex:
from figurex import Figure, Panel

with Figure("My plot", layout=(1,2), size=(4,5), save="file.png"):
    with Panel() as ax:
        ax.plot([1,2],[3,4])
    with Panel() as ax:
        ax.plot([2,3],[4,5])

The Figure() environment generates the matplotlib-based figure and axes for you, and automatically shows, saves, and closes the figure when leaving the context. It is just a wrapper around standard matplotlib code, you can use ax to modify the plot as you would normally do. Extend it your way without limits!

Examples

Make a simple plot:

with Figure("A simple plot") as ax:
    ax.plot([1,2],[3,4])

A plot with two panels:

with Figure(layout=(1,2), size=(6,3)):
    with Panel("a) Magic") as ax:
        ax.plot([1,2],[3,4])
    with Panel("b) Reality", grid="") as ax:
        ax.plot([5,5],[6,4])

Save a plot into memory for later use (e.g. in FPDF):

with Figure("Tea party", show=False):
    with Panel() as ax:
        ax.plot([5,5],[6,4])
my_figure = Figure.as_object()
# <_io.BytesIO at 0x...>

Plotting maps:

from figurex.basemap import Basemap

with Figure(size=(3,3)):
    with Basemap("Germany", extent=(5,15,46,55), tiles="relief") as Map:
        x,y = Map(12.385, 51.331)
        Map.scatter(x, y,  marker="x", color="red", s=200)

Figurex examples

Documentation

A documentation and API reference can be found on ReadTheDocs:

Install

pip install figurex

If you want to use geospatial mapping features with Basemap or Cartopy, install the corresponding optional features:

pip install figurex[basemap]
pip install figurex[cartopy]

If you work with uv, replace pip install by uv add.

Requirements

  • python >3.10
  • numpy >2.0
  • matplotlib >3.0
  • basemap >=2.0 (optional)
  • cartopy >=0.25 (optional)
  • scipy (optional, required by cartopy)

Related

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

figurex-0.2.15.tar.gz (15.2 kB view details)

Uploaded Source

Built Distribution

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

figurex-0.2.15-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file figurex-0.2.15.tar.gz.

File metadata

  • Download URL: figurex-0.2.15.tar.gz
  • Upload date:
  • Size: 15.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.5

File hashes

Hashes for figurex-0.2.15.tar.gz
Algorithm Hash digest
SHA256 842ec96065d390f638e650a3c1e2db11a559817aa9c69e74c4754c736edfee56
MD5 804b23b9f348f08e48ce820fd21e4b59
BLAKE2b-256 f247269817b100da599eb31d24cf0e9eaca677b683e7f0948ebe7a8cf86354cd

See more details on using hashes here.

File details

Details for the file figurex-0.2.15-py3-none-any.whl.

File metadata

  • Download URL: figurex-0.2.15-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.5

File hashes

Hashes for figurex-0.2.15-py3-none-any.whl
Algorithm Hash digest
SHA256 7696f90f01e5d6b75e5df4ffefecf29fa90089b35dea79493b924bec5823a6fa
MD5 16f17997c301c444d85428e872c98887
BLAKE2b-256 14cca7dd1bb86f907ef7194be9657d3e05c8afaefabc2d6fc27aa3cb206a8abd

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