Plot complex-valued functions
Project description
Plot complex-valued functions with style.
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=2.0,
# contours_arg=(-np.pi / 2, 0, np.pi / 2, np.pi),
# emphasize_abs_contour_1: bool = True,
# add_colorbars: bool = True,
# add_axes_labels: bool = True,
# saturation_adjustment: float = 1.28,
# min_contour_length = None,
# linewidth = None,
)
plt.show()
Historically, plotting of complex functions was in one of three ways
Only show the absolute value; sometimes as a 3D plot | Only show the phase/the argument in a color wheel (phase portrait) | Show contour lines for both arg and abs |
Combining all three of them gives you a cplot:
See also Wikipedia: Domain coloring.
Features of this software:
- cplot uses OKLAB, a perceptually uniform color space for the argument colors. This avoids streaks of colors occurring with other color spaces, e.g., HSL.
- The contour
abs(z) == 1
is emphasized, other abs contours are at 2, 4, 8, etc. and 1/2, 1/4, 1/8, etc., respectively. This makes it easy to tell the absolte value precisely. - For
arg(z) == 0
, the color is green, forarg(z) == pi/2
it's blue, forarg(z) = -pi / 2
it's orange, and forarg(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)
Riemann sphere
cplot can also plot functions on the Riemann sphere, a mapping of the complex plane to the unit ball.
import cplot
import numpy as np
cplot.riemann_sphere(np.log)
Gallery
Testing
To run the cplot unit tests, check out this repository and run
tox
Similar projects and further reading
- Tristan Needham, Visual Complex Analysis, 1997
- François Labelle, A Gallery of Complex Functions, 2002
- Douglas Arnold and Jonathan Rogness, Möbius transformations revealed, 2008
- Konstantin Poelke and Konrad Polthier, Lifted Domain Coloring, 2009
- Elias Wegert and Gunter Semmler, Phase Plots of Complex Functions: a Journey in Illustration, 2011
- Elias Wegert, Calendars Complex Beauties, 2011-
- Elias Wegert, Visual Complex Functions, 2012
- empet, Visualizing complex-valued functions with Matplotlib and Mayavi, Domain coloring method, 2014
- John D. Cook, Visualizing complex functions, 2017
- endolith, complex-colormap, 2017
- Anthony Hernandez, dcolor, 2017
- Juan Carlos Ponce Campuzano, DC gallery, 2018
- 3Blue1Brown, Winding numbers and domain coloring, 2018
- Ricky Reusser, Domain Coloring with Adaptive Contouring, 2019
- Ricky Reusser, Locally Scaled Domain Coloring, Part 1: Contour Plots, 2020
- David Lowry-Duda, Visualizing modular forms, 2020
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file cplot-0.9.3.tar.gz
.
File metadata
- Download URL: cplot-0.9.3.tar.gz
- Upload date:
- Size: 52.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5534dcb977ac01238be9633d2f3bf0e6079b8c56b3923c643648609421cb10d0 |
|
MD5 | d77a6b78f227d7cbecd141644ee9267b |
|
BLAKE2b-256 | 12da5cf7f1db1fba8e4bbe84ba195005f743dc0262c0f23bf88c4a96dbb9e52a |
File details
Details for the file cplot-0.9.3-py3-none-any.whl
.
File metadata
- Download URL: cplot-0.9.3-py3-none-any.whl
- Upload date:
- Size: 39.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f58ae94b9371a40ab4be4584ce7cc2cad9abe2eba6960e5cdd9ba34d4918b74b |
|
MD5 | aa16752fa2327741416b8cfa06dc0ee9 |
|
BLAKE2b-256 | deff41cddc6e3f62e1a0522c2c958f5fc789b48bd6749040c3b8e7743c03e931 |