Skip to main content

Centralized plotting utilities for reproducible, publication-quality figures in system theory and control engineering

Project description

PyPI CI Docs Publish

Sysplot

Sysplot provides centralized plotting utilities for reproducible, publication-quality figures in system theory and control engineering.

It extends Matplotlib with consistent figure styling, configuration management, specialized helpers for annotating and improving visual clarity, and high-level plotting functions for Bode plots, Nyquist diagrams, and pole-zero maps.

The project documentation is available via GitHub Pages.

Installation

Sysplot is available on PyPI. Python 3.11 or higher is required. Install with uv:

uv add sysplot

Or with pip:

pip install sysplot

Minimum Example

After you defined the magnitude, phase and frequency data for your system, a single call to sysplot.plot_bode is all you need to generate a Bode plot. This will include a custom seaborn theme, magnitude in dB, phase unwrapped in multiples of $2\pi$, phase tick labels in fractional multiples of $\frac{\pi}{2}$, and a logarithmic frequency axis with minor decade ticks included automatically.

Bode Plot

import numpy as np
import matplotlib.pyplot as plt
import control as ctrl
import sysplot as ssp

ssp.apply_config() # apply sysplot style 

# Generate frequency response
omega = np.logspace(-2, 2, 300)
system = ctrl.tf([6.25], [1, 3 , 6.25])
mag, phase, _ = ctrl.frequency_response(system, omega)

ssp.plot_bode(mag, phase, omega)    # ** sysplot is used here **

axes[0].set(xlabel="rad/s", ylabel="dB", title="Bode Plot")
axes[1].set(xlabel="rad/s", ylabel="rad/s", title="Phase Plot")
plt.show()

Contributing

See CONTRIBUTING for dev setup, code requirements, and contribution guidelines.

License

MIT License – see LICENSE for details.

TODO

  • add pytest for gallery examples to CI workflow.

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

sysplot-1.0.2.tar.gz (478.3 kB view details)

Uploaded Source

Built Distribution

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

sysplot-1.0.2-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file sysplot-1.0.2.tar.gz.

File metadata

  • Download URL: sysplot-1.0.2.tar.gz
  • Upload date:
  • Size: 478.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sysplot-1.0.2.tar.gz
Algorithm Hash digest
SHA256 d6cd15828d2a6c68bda52e567413bc53febe75493b313a42c40a7fbb51b965d3
MD5 9f408e2299cc6f30657436cdbf2f594e
BLAKE2b-256 c7e3ca71f6e90d57d9e057f5c6833d57491833197a42dcb8610f022b908300ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for sysplot-1.0.2.tar.gz:

Publisher: publish.yaml on JaxRaffnix/sysplot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sysplot-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: sysplot-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 29.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sysplot-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7b78de748691f64dadf357ec8e414086d023fd972ed06a7edd6d253275061d91
MD5 bde91918226c8ffecc0aacb1b0e6176a
BLAKE2b-256 e47307b34ffb457c034e4b728a73f93a23fc2f0d71335961b947e41b8f6f9251

See more details on using hashes here.

Provenance

The following attestation bundles were made for sysplot-1.0.2-py3-none-any.whl:

Publisher: publish.yaml on JaxRaffnix/sysplot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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