Skip to main content

Plot complex-valued functions

Project description

cplot

Plot complex-valued functions with style.

PyPi Version PyPI pyversions GitHub stars PyPi 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 orange, for arg(z) = -pi / 2 it's blue, 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 z / abs(z) (z+1) / (z-1)
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
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)

Testing

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

tox

Similar projects and further reading

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.1.tar.gz (27.8 kB view hashes)

Uploaded Source

Built Distribution

cplot-0.7.1-py3-none-any.whl (25.7 kB view hashes)

Uploaded Python 3

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