Skip to main content

Plot complex-valued functions

Project description

cplot

Plot complex-valued functions with style.

PyPi Version PyPI pyversions GitHub stars Downloads

Discord

gh-actions codecov Code style: black

cplot helps plotting complex-valued functions in a visually appealing manner.

Install with

pip install cplot

and use as

import numpy as np

import cplot


def f(z):
    return np.sin(z ** 3) / z


plt = cplot.plot(
    f,
    (-2.0, +2.0, 400),
    (-2.0, +2.0, 400),
    # abs_scaling=lambda x: x / (x + 1),  # how to scale the lightness in domain coloring
    # contours_abs="auto",
    # contours_arg=(-np.pi / 2, 0, np.pi / 2, np.pi),
    # highlight_abs_contour_1: bool = True,
    # colorspace: str = "cam16",
    # add_colorbars: bool = True,
    # add_axes_labels: bool = True,
    # saturation_adjustment: float = 1.28,
)
plt.show()

The plot consists of three building blocks:

  • domain coloring, i.e., mapping the absolute value to lightness and the complex argument to the chroma of the representing color
  • Contours of constant absolute value (the contour abs(z) == 1 is highlighted, the other contours are at (2, 4, 8, etc. and 1/2, 1/4, 1/8, etc., respectively)
  • Contours along constant argument (angle). For arg(z) == 0, the color is green, for arg(z) == pi/2 it's blue, for arg(z) = -pi / 2 it's orange, and for arg(z) = pi it's pink

Other useful functions:

# There is a tripcolor function as well for triangulated 2D domains
cplot.tripcolor(triang, z)

# The function get_srgb1 returns the SRGB1 triple for every complex input value.
# (Accepts arrays, too.)
z = 2 + 5j
val = cplot.get_srgb1(z)

Gallery

All plots are created with default settings.

z ** 1 z ** 2 z ** 3
1 / z 1 / z ** 2 (z + 1) / (z - 1)
np.real z / abs(z) np.conj
z ** 6 + 1 z ** 6 - 1 z ** (-6) + 1
z ** z (1/z) ** z z ** (1/z)
np.sqrt z**(1/3) z**(1/4)
np.log np.exp np.exp2
np.exp(1 / z) z * np.sin(1 / z) np.cos(1 / z)
exp(- z ** 2) 1 / (1 + z ** 2) scipy.special.erf
np.sin np.cos np.tan
sec csc cot
np.sinh np.cosh np.tanh
np.arcsin np.arccos np.arctan
sin(z) / z cos(z) / z tan(z) / z
scipy.special.gamma scipy.special.digamma mpmath.zeta
mpmath.siegeltheta mpmath.siegelz Riemann-Xi
Jacobi elliptic function sn(0.6) cn(0.6) dn(0.6)
Bessel function, first kind, order 1 order 2 order 3
Airy function Ai Bi Exponentially scaled eAi
tanh(pi / 2 * sinh(z)) sinh(pi / 2 * sinh(z)) exp(pi / 2 * sinh(z))

Testing

To run the cplot unit tests, check out this repository and run

tox

Similar projects and further reading

License

This software is published under the GPL-3.0 license. In cases where the constraints of the GPL prevent you from using this software, feel free contact the author.

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

cplot-0.7.4.tar.gz (28.5 kB view details)

Uploaded Source

Built Distribution

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

cplot-0.7.4-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file cplot-0.7.4.tar.gz.

File metadata

  • Download URL: cplot-0.7.4.tar.gz
  • Upload date:
  • Size: 28.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for cplot-0.7.4.tar.gz
Algorithm Hash digest
SHA256 f3a033500cd68fa9f40224c8ea148b3fefb58d0b8ec3ed32d9046e0b3928bac2
MD5 b0dae21f287b3e34b4fa0533be291541
BLAKE2b-256 bfd34762c562b6d1b607abdd25808763912c016e79c7b460df3708f0710305d7

See more details on using hashes here.

File details

Details for the file cplot-0.7.4-py3-none-any.whl.

File metadata

  • Download URL: cplot-0.7.4-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for cplot-0.7.4-py3-none-any.whl
Algorithm Hash digest
SHA256 95e5c53c43f0b45e78ca59199d57b8f00bdb7eb93fde52d01060a512472b5ac6
MD5 b22801e5f93ab50a462ae32e8cc15f46
BLAKE2b-256 7cc818d83df98d57458cbc93171d07d574967c5ca36f05b19d125dbb9bb38ab2

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