Skip to main content

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

Project description

Figurex

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

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]

Requirements

  • python >3.9
  • numpy
  • matplotlib
  • basemap >=1.4.1 (optional)
  • cartopy >=0.23 (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.7.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

figurex-0.2.7-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: figurex-0.2.7.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.9 Windows/10

File hashes

Hashes for figurex-0.2.7.tar.gz
Algorithm Hash digest
SHA256 252fd965eaa89e2e5bd065df7b86e7d4e70de835c29b21fb1b13dcbd3409dbd5
MD5 4bd9ba20ae6f7fc8ac29d165408b3921
BLAKE2b-256 1abde6933febd0d565630404539e94918baae8300562e4503ac87d3ef35043b0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: figurex-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.11.9 Windows/10

File hashes

Hashes for figurex-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 4a4b5f5cc14ed2785f24c834caa92cc94b07494a1178d0b8dd31f23da67d9b6d
MD5 3501f2491bd43dd4335af7d73d9d2f13
BLAKE2b-256 e62e864e3ff984666a58392ab81409af0f7f7f1bdfecdf26f9ce30c506128ebb

See more details on using hashes here.

Supported by

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