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", save="memory") as memory:
    with Panel() as ax:
        ax.plot([5,5],[6,4])
memory
# <_io.BytesIO at 0x...>

Plotting maps:

from figurex 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

Requirements

  • Minimal requirements (basic plotting):
    • python >3.9
    • numpy
    • matplotlib
    • neatlogger (wrapper for loguru, logging)
  • If you want to make geographic maps with figurex.cartopy:
    • cartopy
  • If you want to make geographic maps with figurex.basemap:
    • basemap >1.4

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.2.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

figurex-0.2.2-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: figurex-0.2.2.tar.gz
  • Upload date:
  • Size: 9.8 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.2.tar.gz
Algorithm Hash digest
SHA256 d099481f15a3163ec2fc8b85f7c7ffec061be58868b4af2a428a74afb350cc2a
MD5 b09789a0559d447d78f6d92cff7f104b
BLAKE2b-256 07b23dd3628d7f2f72c59165b749c6d8986dd9178509ad2b7f3ac2319818b902

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: figurex-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 12.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 74cb72baa4d4d99184bcc429cfd78e523e16e0fbd99d16f74b85e74267db40bf
MD5 f0a341a7a32e792cb6ba501e469224f3
BLAKE2b-256 d7b811712fa3192da0e77e4bcb9cc8b91eb30e28c87ddaa16e8d73954163083a

See more details on using hashes here.

Provenance

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